{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.model_selection import train_test_split\n",
    "import math\n",
    "from pandas.tseries.holiday import USFederalHolidayCalendar\n",
    "from pandas.tseries.offsets import CustomBusinessDay\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "from sklearn import preprocessing\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "test = pd.read_csv(\"test_users.csv\")\n",
    "train = pd.read_csv(\"train_users_2.csv\")\n",
    "sessions = pd.read_csv(\"sessions.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "There were 213451 users in the training set and 62096 in the test set.\n",
      "In total there were 275547 users.\n",
      "There were 10567737 recorded sessions to which there were 135483 unique users in the sessions data.\n"
     ]
    }
   ],
   "source": [
    "print('There were', train.shape[0], 'users in the training set and', test.shape[0], 'in the test set.')\n",
    "print('In total there were', train.shape[0] + test.shape[0], 'users.')\n",
    "print('There were', sessions.shape[0], 'recorded sessions to which there were', sessions.user_id.nunique(), 'unique users in the sessions data.')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We have way more users in users data than sessions data."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Sessions Data Exploring, Preprocessing & Feature Engineering\n",
    "\n",
    "After playing around with the data sets for several times, I realized the best way is to start with sessions data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "user_id            34496\n",
       "action             79626\n",
       "action_type      1126204\n",
       "action_detail    1126204\n",
       "device_type            0\n",
       "secs_elapsed      136031\n",
       "dtype: int64"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sessions.isnull().sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Missing values\n",
    "\n",
    "There are so many missing values in sessions data, we have no choice but find a way to fill them.\n",
    "\n",
    "First, we drop rows where user_id is null."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "sessions = sessions[sessions.user_id.notnull()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "user_id                0\n",
       "action             79480\n",
       "action_type      1122957\n",
       "action_detail    1122957\n",
       "device_type            0\n",
       "secs_elapsed      135483\n",
       "dtype: int64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sessions.isnull().sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Missing values in action"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>action</th>\n",
       "      <th>action_type</th>\n",
       "      <th>action_detail</th>\n",
       "      <th>device_type</th>\n",
       "      <th>secs_elapsed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>d1mm9tcy42</td>\n",
       "      <td>NaN</td>\n",
       "      <td>message_post</td>\n",
       "      <td>message_post</td>\n",
       "      <td>Windows Desktop</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>138</th>\n",
       "      <td>4grx6yxeby</td>\n",
       "      <td>NaN</td>\n",
       "      <td>message_post</td>\n",
       "      <td>message_post</td>\n",
       "      <td>Windows Desktop</td>\n",
       "      <td>59801.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>317</th>\n",
       "      <td>xwxei6hdk4</td>\n",
       "      <td>NaN</td>\n",
       "      <td>message_post</td>\n",
       "      <td>message_post</td>\n",
       "      <td>iPad Tablet</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>320</th>\n",
       "      <td>xwxei6hdk4</td>\n",
       "      <td>NaN</td>\n",
       "      <td>message_post</td>\n",
       "      <td>message_post</td>\n",
       "      <td>iPad Tablet</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>382</th>\n",
       "      <td>ro2stddszp</td>\n",
       "      <td>NaN</td>\n",
       "      <td>message_post</td>\n",
       "      <td>message_post</td>\n",
       "      <td>Mac Desktop</td>\n",
       "      <td>7192.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        user_id action   action_type action_detail      device_type  \\\n",
       "45   d1mm9tcy42    NaN  message_post  message_post  Windows Desktop   \n",
       "138  4grx6yxeby    NaN  message_post  message_post  Windows Desktop   \n",
       "317  xwxei6hdk4    NaN  message_post  message_post      iPad Tablet   \n",
       "320  xwxei6hdk4    NaN  message_post  message_post      iPad Tablet   \n",
       "382  ro2stddszp    NaN  message_post  message_post      Mac Desktop   \n",
       "\n",
       "     secs_elapsed  \n",
       "45            NaN  \n",
       "138       59801.0  \n",
       "317           NaN  \n",
       "320           0.0  \n",
       "382        7192.0  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sessions[sessions.action.isnull()].head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "message_post    79480\n",
       "Name: action_type, dtype: int64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sessions[sessions.action.isnull()].action_type.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We find in all the nulls in action feature, have a \"message_post\" in action_type and action_detail features. So we will fill all the nulls in action feature with \"message\"."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "sessions.loc[sessions.action.isnull(), 'action'] = 'message'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "user_id                0\n",
       "action                 0\n",
       "action_type      1122957\n",
       "action_detail    1122957\n",
       "device_type            0\n",
       "secs_elapsed      135483\n",
       "dtype: int64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sessions.isnull().sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Missing values in action_type and action_detail\n",
    "\n",
    "The following are the missing values in action_type and action_detail features that we have to fill, and they all have the same rows that are missing."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "show                      580485\n",
      "similar_listings_v2       168457\n",
      "lookup                    161422\n",
      "campaigns                 104331\n",
      "track_page_view            80949\n",
      "index                      16682\n",
      "localization_settings       5380\n",
      "uptodate                    3329\n",
      "signed_out_modal            1054\n",
      "currencies                   292\n",
      "update                       225\n",
      "braintree_client_token       120\n",
      "check                        119\n",
      "widget                        75\n",
      "phone_verification            16\n",
      "satisfy                        9\n",
      "track_activity                 6\n",
      "disaster_action                6\n",
      "Name: action, dtype: int64\n",
      "---\n",
      "show                      580485\n",
      "similar_listings_v2       168457\n",
      "lookup                    161422\n",
      "campaigns                 104331\n",
      "track_page_view            80949\n",
      "index                      16682\n",
      "localization_settings       5380\n",
      "uptodate                    3329\n",
      "signed_out_modal            1054\n",
      "currencies                   292\n",
      "update                       225\n",
      "braintree_client_token       120\n",
      "check                        119\n",
      "widget                        75\n",
      "phone_verification            16\n",
      "satisfy                        9\n",
      "track_activity                 6\n",
      "disaster_action                6\n",
      "Name: action, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "print(sessions[sessions.action_type.isnull()].action.value_counts())\n",
    "print('---')\n",
    "print(sessions[sessions.action_detail.isnull()].action.value_counts())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The following function finds the most common value of a feature, specific to each action, then fill in action_type and action_detail."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "def most_common_value_by_all_users(merge_df, feature):\n",
    "    new_df = pd.DataFrame(merge_df.groupby('action')[feature].value_counts())\n",
    "    new_df['index_tuple'] = new_df.index\n",
    "    new_df['count'] = new_df[feature]\n",
    "    new_columns = ['action', feature]\n",
    "    for n, col in enumerate(new_columns):\n",
    "        new_df[col] = new_df.index_tuple.apply(lambda index_tuple: index_tuple[n])\n",
    "        \n",
    "    new_df = new_df.reset_index(drop=True)\n",
    "    new_df = new_df.drop(['index_tuple'], axis=1)\n",
    "    \n",
    "    new_df_max = pd.DataFrame(new_df.groupby('action', as_index=False)['count'].max())\n",
    "    new_df_max = new_df_max.merge(new_df, on = ['action', 'count'])\n",
    "    new_df_max = new_df_max.drop('count', axis=1)\n",
    "    merge_df = merge_df.merge(new_df_max, left_on = 'action', right_on = 'action', how='left')\n",
    "    \n",
    "    return merge_df\n",
    "sessions = most_common_value_by_all_users(sessions, 'action_type')\n",
    "sessions = most_common_value_by_all_users(sessions, 'action_detail')\n",
    "sessions.loc[sessions.action_type_x.isnull(), 'action_type_x'] = sessions.action_type_y\n",
    "sessions.loc[sessions.action_detail_x.isnull(), 'action_detail_x'] = sessions.action_detail_y\n",
    "sessions['action_type'] = sessions.action_type_x\n",
    "sessions['action_detail'] = sessions.action_detail_x\n",
    "sessions.drop(['action_type_x', 'action_detail_x', 'action_type_y', 'action_detail_y'], axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "user_id               0\n",
       "action                0\n",
       "device_type           0\n",
       "secs_elapsed     135483\n",
       "action_type      415562\n",
       "action_detail    415562\n",
       "dtype: int64"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sessions.isnull().sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "After that, we still have a lot of many missing values, such as missing values in action_type and action_detail where action as \"similar_listings_v2\", \"lookup\" and \"track_page_view\" and so on."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "similar_listings_v2       168457\n",
       "lookup                    161422\n",
       "track_page_view            80949\n",
       "uptodate                    3329\n",
       "signed_out_modal            1054\n",
       "braintree_client_token       120\n",
       "check                        119\n",
       "widget                        75\n",
       "phone_verification            16\n",
       "satisfy                        9\n",
       "disaster_action                6\n",
       "track_activity                 6\n",
       "Name: action, dtype: int64"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sessions[sessions.action_type.isnull()].action.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data    363423\n",
      "Name: action_type, dtype: int64\n",
      "---\n",
      "similar_listings    363423\n",
      "Name: action_detail, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "print(sessions[sessions.action == 'similar_listings'].action_type.value_counts())\n",
    "print('---')\n",
    "print(sessions[sessions.action == 'similar_listings'].action_detail.value_counts())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We noticed that action \"similar_listing\" has action_type as \"data\" and action_detail as \"similar_listings\". Therefore, we use those to fill action \"similar_listings_v2\"."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "sessions.loc[sessions.action == 'similar_listings_v2', 'action_type'] = 'data'\n",
    "sessions.loc[sessions.action == 'similar_listings_v2', 'action_detail'] = 'similar_listings'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The rest are easy, and lastly, we fill \"missing\" to the ones we can't find them a home."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "sessions.loc[sessions.action == 'lookup', 'action_type'] = 'lookup'\n",
    "sessions.loc[sessions.action == 'lookup', 'action_detail'] = 'lookup'\n",
    "sessions.loc[sessions.action == 'track_page_view', 'action_type'] = 'track_page_view'\n",
    "sessions.loc[sessions.action == 'track_page_view', 'action_detail'] = 'track_page_view'\n",
    "sessions.action_type = sessions.action_type.fillna('missing')\n",
    "sessions.action_detail = sessions.action_detail.fillna('missing')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "user_id               0\n",
       "action                0\n",
       "device_type           0\n",
       "secs_elapsed     135483\n",
       "action_type           0\n",
       "action_detail         0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sessions.isnull().sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Missing values in secs_elapsed\n",
    "\n",
    "Fill the missing secs_elapsed with the median secs_elapsed for each action."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "sessions[\"secs_elapsed\"] = sessions.groupby(\"action\").transform(lambda x: x.fillna(x.median()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "user_id          0\n",
       "action           0\n",
       "device_type      0\n",
       "secs_elapsed     0\n",
       "action_type      0\n",
       "action_detail    0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sessions.isnull().sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "All done!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>action</th>\n",
       "      <th>device_type</th>\n",
       "      <th>secs_elapsed</th>\n",
       "      <th>action_type</th>\n",
       "      <th>action_detail</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>d1mm9tcy42</td>\n",
       "      <td>lookup</td>\n",
       "      <td>Windows Desktop</td>\n",
       "      <td>319.0</td>\n",
       "      <td>lookup</td>\n",
       "      <td>lookup</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>d1mm9tcy42</td>\n",
       "      <td>search_results</td>\n",
       "      <td>Windows Desktop</td>\n",
       "      <td>67753.0</td>\n",
       "      <td>click</td>\n",
       "      <td>view_search_results</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>d1mm9tcy42</td>\n",
       "      <td>lookup</td>\n",
       "      <td>Windows Desktop</td>\n",
       "      <td>301.0</td>\n",
       "      <td>lookup</td>\n",
       "      <td>lookup</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>d1mm9tcy42</td>\n",
       "      <td>search_results</td>\n",
       "      <td>Windows Desktop</td>\n",
       "      <td>22141.0</td>\n",
       "      <td>click</td>\n",
       "      <td>view_search_results</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>d1mm9tcy42</td>\n",
       "      <td>lookup</td>\n",
       "      <td>Windows Desktop</td>\n",
       "      <td>435.0</td>\n",
       "      <td>lookup</td>\n",
       "      <td>lookup</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      user_id          action      device_type  secs_elapsed action_type  \\\n",
       "0  d1mm9tcy42          lookup  Windows Desktop         319.0      lookup   \n",
       "1  d1mm9tcy42  search_results  Windows Desktop       67753.0       click   \n",
       "2  d1mm9tcy42          lookup  Windows Desktop         301.0      lookup   \n",
       "3  d1mm9tcy42  search_results  Windows Desktop       22141.0       click   \n",
       "4  d1mm9tcy42          lookup  Windows Desktop         435.0      lookup   \n",
       "\n",
       "         action_detail  \n",
       "0               lookup  \n",
       "1  view_search_results  \n",
       "2               lookup  \n",
       "3  view_search_results  \n",
       "4               lookup  "
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sessions.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Feature Engineering\n",
    "\n",
    "Based on current sessions dataframe, we create a new dataframe that finds each user's count of actions, sum of secs_elapsed, the most common value for a specific feature, the number of unique values of a feature, the maximum and minimum secs_elapsed, for each user, and so on."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### action_count"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "sessions_new = pd.DataFrame(sessions.user_id.value_counts(sort=False))\n",
    "sessions_new['action_count'] = sessions_new.user_id\n",
    "sessions_new['user_id'] = sessions_new.index\n",
    "sessions_new = sessions_new.reset_index(drop=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>action_count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>hivc6c5h99</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>b46vpqz2pp</td>\n",
       "      <td>39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2zs5vmvcbq</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>17q3fns1ft</td>\n",
       "      <td>116</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>ivwsqo67rb</td>\n",
       "      <td>94</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      user_id  action_count\n",
       "0  hivc6c5h99            13\n",
       "1  b46vpqz2pp            39\n",
       "2  2zs5vmvcbq            19\n",
       "3  17q3fns1ft           116\n",
       "4  ivwsqo67rb            94"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sessions_new.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Most frequent value in each feature (action, action_type, action_detail, device_type)\n",
    "\n",
    "The following function returns the most frequent value in each feature, for a given user."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "def most_frequent_value(merge_df, feature):\n",
    "    # Group by the users and find the value counts of the feature\n",
    "    new_df = pd.DataFrame(sessions.groupby('user_id')[feature].value_counts())\n",
    "    # The index is a tuple, and we need to seperate it, so let's create a new feature from it.\n",
    "    new_df['index_tuple'] = new_df.index\n",
    "    # The new columns are the features created from the tuple.\n",
    "    new_columns = ['user_id',feature]\n",
    "    for n,col in enumerate(new_columns):\n",
    "        new_df[col] = new_df.index_tuple.apply(lambda index_tuple: index_tuple[n])\n",
    "    \n",
    "    # Drop the old index (the tuple index)\n",
    "    new_df = new_df.reset_index(drop = True)\n",
    "    # Drop the unneeded feature\n",
    "    new_df = new_df.drop('index_tuple', axis = 1)\n",
    "    # Select the first value for each user, its most common\n",
    "    new_df = new_df.groupby('user_id').first()\n",
    "    \n",
    "    # Set user_id equal to the index, then reset the index\n",
    "    new_df['user_id'] = new_df.index\n",
    "    new_df = new_df.reset_index(drop = True)\n",
    "    \n",
    "    merge_df = merge_df.merge(new_df)\n",
    "    \n",
    "    return merge_df\n",
    "\n",
    "sessions_feature = ['action', 'action_type', 'action_detail', 'device_type']\n",
    "\n",
    "for feature in sessions_feature:\n",
    "    sessions_new = most_frequent_value(sessions_new, feature)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>action_count</th>\n",
       "      <th>action</th>\n",
       "      <th>action_type</th>\n",
       "      <th>action_detail</th>\n",
       "      <th>device_type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>e8zzuy8rk1</td>\n",
       "      <td>152</td>\n",
       "      <td>show</td>\n",
       "      <td>click</td>\n",
       "      <td>p3</td>\n",
       "      <td>Windows Desktop</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>upvhlkz4cu</td>\n",
       "      <td>16</td>\n",
       "      <td>show</td>\n",
       "      <td>view</td>\n",
       "      <td>p3</td>\n",
       "      <td>Windows Desktop</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>22n9cobcpk</td>\n",
       "      <td>72</td>\n",
       "      <td>show</td>\n",
       "      <td>view</td>\n",
       "      <td>-unknown-</td>\n",
       "      <td>Mac Desktop</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>u0fkrhizzl</td>\n",
       "      <td>12</td>\n",
       "      <td>show</td>\n",
       "      <td>view</td>\n",
       "      <td>-unknown-</td>\n",
       "      <td>Android Phone</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>gir1sb7mtg</td>\n",
       "      <td>29</td>\n",
       "      <td>show</td>\n",
       "      <td>view</td>\n",
       "      <td>user_profile</td>\n",
       "      <td>iPhone</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      user_id  action_count action action_type action_detail      device_type\n",
       "0  e8zzuy8rk1           152   show       click            p3  Windows Desktop\n",
       "1  upvhlkz4cu            16   show        view            p3  Windows Desktop\n",
       "2  22n9cobcpk            72   show        view     -unknown-      Mac Desktop\n",
       "3  u0fkrhizzl            12   show        view     -unknown-    Android Phone\n",
       "4  gir1sb7mtg            29   show        view  user_profile           iPhone"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sessions_new.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### The number of unique values of a feature for each user.\n",
    "\n",
    "The following function returns the number of unique values of a feature for each user."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "def unique_features(feature, feature_name, merge_df):\n",
    "    # Create a dataframe by grouping the users and the feature\n",
    "    unique_feature = pd.DataFrame(sessions.groupby('user_id')[feature].unique())\n",
    "    unique_feature['user_id'] = unique_feature.index\n",
    "    unique_feature = unique_feature.reset_index(drop = True)\n",
    "    # Create a new feature equal to the number of unique features for each user\n",
    "    unique_feature[feature_name] = unique_feature[feature].map(lambda x: len(x))\n",
    "    # Drop the needed feature\n",
    "    unique_feature = unique_feature.drop(feature, axis = 1)\n",
    "    merge_df = merge_df.merge(unique_feature, on = 'user_id')\n",
    "    return merge_df\n",
    "sessions_new = unique_features('action', 'unique_actions', sessions_new)\n",
    "sessions_new = unique_features('action_type', 'unique_action_types', sessions_new)\n",
    "sessions_new = unique_features('action_detail', 'unique_action_details', sessions_new)\n",
    "sessions_new = unique_features('device_type', 'unique_device_types', sessions_new)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>action_count</th>\n",
       "      <th>action</th>\n",
       "      <th>action_type</th>\n",
       "      <th>action_detail</th>\n",
       "      <th>device_type</th>\n",
       "      <th>unique_actions</th>\n",
       "      <th>unique_action_types</th>\n",
       "      <th>unique_action_details</th>\n",
       "      <th>unique_device_types</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>e8zzuy8rk1</td>\n",
       "      <td>152</td>\n",
       "      <td>show</td>\n",
       "      <td>click</td>\n",
       "      <td>p3</td>\n",
       "      <td>Windows Desktop</td>\n",
       "      <td>22</td>\n",
       "      <td>7</td>\n",
       "      <td>17</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>upvhlkz4cu</td>\n",
       "      <td>16</td>\n",
       "      <td>show</td>\n",
       "      <td>view</td>\n",
       "      <td>p3</td>\n",
       "      <td>Windows Desktop</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>22n9cobcpk</td>\n",
       "      <td>72</td>\n",
       "      <td>show</td>\n",
       "      <td>view</td>\n",
       "      <td>-unknown-</td>\n",
       "      <td>Mac Desktop</td>\n",
       "      <td>28</td>\n",
       "      <td>7</td>\n",
       "      <td>23</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>u0fkrhizzl</td>\n",
       "      <td>12</td>\n",
       "      <td>show</td>\n",
       "      <td>view</td>\n",
       "      <td>-unknown-</td>\n",
       "      <td>Android Phone</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>gir1sb7mtg</td>\n",
       "      <td>29</td>\n",
       "      <td>show</td>\n",
       "      <td>view</td>\n",
       "      <td>user_profile</td>\n",
       "      <td>iPhone</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      user_id  action_count action action_type action_detail      device_type  \\\n",
       "0  e8zzuy8rk1           152   show       click            p3  Windows Desktop   \n",
       "1  upvhlkz4cu            16   show        view            p3  Windows Desktop   \n",
       "2  22n9cobcpk            72   show        view     -unknown-      Mac Desktop   \n",
       "3  u0fkrhizzl            12   show        view     -unknown-    Android Phone   \n",
       "4  gir1sb7mtg            29   show        view  user_profile           iPhone   \n",
       "\n",
       "   unique_actions  unique_action_types  unique_action_details  \\\n",
       "0              22                    7                     17   \n",
       "1               8                    4                      7   \n",
       "2              28                    7                     23   \n",
       "3               7                    4                      6   \n",
       "4               6                    5                      8   \n",
       "\n",
       "   unique_device_types  \n",
       "0                    1  \n",
       "1                    1  \n",
       "2                    1  \n",
       "3                    1  \n",
       "4                    1  "
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sessions_new.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 346,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Find the maximum and minimum secs_elapsed/duration for each user in sessions.\n",
    "# max_durations = pd.DataFrame(sessions.groupby(['user_id'], as_index=False)['secs_elapsed'].max())\n",
    "# sessions_summary = sessions_summary.merge(max_durations, on = 'user_id')\n",
    "# sessions_summary['max_duration'] = sessions_summary.secs_elapsed\n",
    "# sessions_summary.drop('secs_elapsed', axis=1, inplace=True)\n",
    "\n",
    "# min_durations = pd.DataFrame(sessions.groupby(['user_id'], as_index=False)['secs_elapsed'].min())\n",
    "# sessions_summary = sessions_summary.merge(min_durations, on = 'user_id')\n",
    "# sessions_summary['min_duration'] = sessions_summary.secs_elapsed\n",
    "# sessions_summary.drop('secs_elapsed', axis=1, inplace=True)\n",
    "\n",
    "# Find the average duration for each user\n",
    "# sessions_summary['avg_duration'] = sessions_summary.duration / sessions_summary.action_count"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### secs_elapsed\n",
    "\n",
    "We will extract information from secs_elapsed feature for each user, such as sum, mean, min, max, median, if the sum of secs_elapsed is greater than 86,400 second, we consider day_pause, if the sum of secs_elapsed is greater than 300,000 seconds, we consider it is a long pause, and if the sum of secs_elapsed is shorter than 3,600 seconds, we consider it is a short pause."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\SusanLi\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\ipykernel_launcher.py:13: FutureWarning: using a dict on a Series for aggregation\n",
      "is deprecated and will be removed in a future version\n",
      "  del sys.path[0]\n"
     ]
    }
   ],
   "source": [
    "secs_elapsed = sessions.groupby('user_id')['secs_elapsed']\n",
    "\n",
    "secs_elapsed = secs_elapsed.agg(\n",
    "    {\n",
    "        'secs_elapsed_sum': np.sum,\n",
    "        'secs_elapsed_mean': np.mean,\n",
    "        'secs_elapsed_min': np.min,\n",
    "        'secs_elapsed_max': np.max,\n",
    "        'secs_elapsed_median': np.median,\n",
    "        'day_pauses': lambda x: (x > 86400).sum(),\n",
    "        'long_pauses': lambda x: (x > 300000).sum(),\n",
    "        'short_pauses': lambda x: (x < 3600).sum(),\n",
    "        'session_length' : np.count_nonzero\n",
    "    }\n",
    ")\n",
    "secs_elapsed.reset_index(inplace=True)\n",
    "sessions_new = pd.merge(sessions_new, secs_elapsed, on='user_id', how='left')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>action_count</th>\n",
       "      <th>action</th>\n",
       "      <th>action_type</th>\n",
       "      <th>action_detail</th>\n",
       "      <th>device_type</th>\n",
       "      <th>unique_actions</th>\n",
       "      <th>unique_action_types</th>\n",
       "      <th>unique_action_details</th>\n",
       "      <th>unique_device_types</th>\n",
       "      <th>secs_elapsed_sum</th>\n",
       "      <th>secs_elapsed_mean</th>\n",
       "      <th>secs_elapsed_min</th>\n",
       "      <th>secs_elapsed_max</th>\n",
       "      <th>secs_elapsed_median</th>\n",
       "      <th>day_pauses</th>\n",
       "      <th>long_pauses</th>\n",
       "      <th>short_pauses</th>\n",
       "      <th>session_length</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>e8zzuy8rk1</td>\n",
       "      <td>152</td>\n",
       "      <td>show</td>\n",
       "      <td>click</td>\n",
       "      <td>p3</td>\n",
       "      <td>Windows Desktop</td>\n",
       "      <td>22</td>\n",
       "      <td>7</td>\n",
       "      <td>17</td>\n",
       "      <td>1</td>\n",
       "      <td>6503214.5</td>\n",
       "      <td>42784.305921</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1220337.0</td>\n",
       "      <td>743.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>99.0</td>\n",
       "      <td>142.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>upvhlkz4cu</td>\n",
       "      <td>16</td>\n",
       "      <td>show</td>\n",
       "      <td>view</td>\n",
       "      <td>p3</td>\n",
       "      <td>Windows Desktop</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>237087.5</td>\n",
       "      <td>14817.968750</td>\n",
       "      <td>124.0</td>\n",
       "      <td>116057.0</td>\n",
       "      <td>3245.5</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>16.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>22n9cobcpk</td>\n",
       "      <td>72</td>\n",
       "      <td>show</td>\n",
       "      <td>view</td>\n",
       "      <td>-unknown-</td>\n",
       "      <td>Mac Desktop</td>\n",
       "      <td>28</td>\n",
       "      <td>7</td>\n",
       "      <td>23</td>\n",
       "      <td>1</td>\n",
       "      <td>2441601.5</td>\n",
       "      <td>33911.131944</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1209080.0</td>\n",
       "      <td>2021.5</td>\n",
       "      <td>4.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>39.0</td>\n",
       "      <td>71.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>u0fkrhizzl</td>\n",
       "      <td>12</td>\n",
       "      <td>show</td>\n",
       "      <td>view</td>\n",
       "      <td>-unknown-</td>\n",
       "      <td>Android Phone</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>25734.0</td>\n",
       "      <td>2144.500000</td>\n",
       "      <td>11.0</td>\n",
       "      <td>10474.0</td>\n",
       "      <td>751.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>12.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>gir1sb7mtg</td>\n",
       "      <td>29</td>\n",
       "      <td>show</td>\n",
       "      <td>view</td>\n",
       "      <td>user_profile</td>\n",
       "      <td>iPhone</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>266474.5</td>\n",
       "      <td>9188.775862</td>\n",
       "      <td>21.0</td>\n",
       "      <td>67506.0</td>\n",
       "      <td>566.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>29.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      user_id  action_count action action_type action_detail      device_type  \\\n",
       "0  e8zzuy8rk1           152   show       click            p3  Windows Desktop   \n",
       "1  upvhlkz4cu            16   show        view            p3  Windows Desktop   \n",
       "2  22n9cobcpk            72   show        view     -unknown-      Mac Desktop   \n",
       "3  u0fkrhizzl            12   show        view     -unknown-    Android Phone   \n",
       "4  gir1sb7mtg            29   show        view  user_profile           iPhone   \n",
       "\n",
       "   unique_actions  unique_action_types  unique_action_details  \\\n",
       "0              22                    7                     17   \n",
       "1               8                    4                      7   \n",
       "2              28                    7                     23   \n",
       "3               7                    4                      6   \n",
       "4               6                    5                      8   \n",
       "\n",
       "   unique_device_types  secs_elapsed_sum  secs_elapsed_mean  secs_elapsed_min  \\\n",
       "0                    1         6503214.5       42784.305921               0.0   \n",
       "1                    1          237087.5       14817.968750             124.0   \n",
       "2                    1         2441601.5       33911.131944               0.0   \n",
       "3                    1           25734.0        2144.500000              11.0   \n",
       "4                    1          266474.5        9188.775862              21.0   \n",
       "\n",
       "   secs_elapsed_max  secs_elapsed_median  day_pauses  long_pauses  \\\n",
       "0         1220337.0                743.0        18.0          5.0   \n",
       "1          116057.0               3245.5         1.0          0.0   \n",
       "2         1209080.0               2021.5         4.0          2.0   \n",
       "3           10474.0                751.0         0.0          0.0   \n",
       "4           67506.0                566.0         0.0          0.0   \n",
       "\n",
       "   short_pauses  session_length  \n",
       "0          99.0           142.0  \n",
       "1          10.0            16.0  \n",
       "2          39.0            71.0  \n",
       "3           9.0            12.0  \n",
       "4          16.0            29.0  "
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sessions_new.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "user_id                  0\n",
       "action_count             0\n",
       "action                   0\n",
       "action_type              0\n",
       "action_detail            0\n",
       "device_type              0\n",
       "unique_actions           0\n",
       "unique_action_types      0\n",
       "unique_action_details    0\n",
       "unique_device_types      0\n",
       "secs_elapsed_sum         0\n",
       "secs_elapsed_mean        0\n",
       "secs_elapsed_min         0\n",
       "secs_elapsed_max         0\n",
       "secs_elapsed_median      0\n",
       "day_pauses               0\n",
       "long_pauses              0\n",
       "short_pauses             0\n",
       "session_length           0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sessions_new.isnull().sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### New features\n",
    "\n",
    "Add new features to categorize the type of device that the user used most frequently."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "apple_device = ['Mac Desktop','iPhone','iPdad Tablet','iPodtouch']\n",
    "desktop_device = ['Mac Desktop','Windows Desktop','Chromebook','Linux Desktop']\n",
    "tablet_device = ['Android App Unknown Phone/Tablet','iPad Tablet','Tablet']\n",
    "mobile_device = ['Android Phone','iPhone','Windows Phone','Blackberry','Opera Phone']\n",
    "\n",
    "device_types = {'apple_device': apple_device, \n",
    "                'desktop_device': desktop_device,\n",
    "                'tablet_device': tablet_device,\n",
    "                'mobile_device': mobile_device}\n",
    "for device in device_types:\n",
    "    sessions_new[device] = 0\n",
    "    sessions_new.loc[sessions_new.device_type.isin(device_types[device]), device] = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>action_count</th>\n",
       "      <th>action</th>\n",
       "      <th>action_type</th>\n",
       "      <th>action_detail</th>\n",
       "      <th>device_type</th>\n",
       "      <th>unique_actions</th>\n",
       "      <th>unique_action_types</th>\n",
       "      <th>unique_action_details</th>\n",
       "      <th>unique_device_types</th>\n",
       "      <th>...</th>\n",
       "      <th>secs_elapsed_max</th>\n",
       "      <th>secs_elapsed_median</th>\n",
       "      <th>day_pauses</th>\n",
       "      <th>long_pauses</th>\n",
       "      <th>short_pauses</th>\n",
       "      <th>session_length</th>\n",
       "      <th>apple_device</th>\n",
       "      <th>desktop_device</th>\n",
       "      <th>tablet_device</th>\n",
       "      <th>mobile_device</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>e8zzuy8rk1</td>\n",
       "      <td>152</td>\n",
       "      <td>show</td>\n",
       "      <td>click</td>\n",
       "      <td>p3</td>\n",
       "      <td>Windows Desktop</td>\n",
       "      <td>22</td>\n",
       "      <td>7</td>\n",
       "      <td>17</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>1220337.0</td>\n",
       "      <td>743.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>99.0</td>\n",
       "      <td>142.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>upvhlkz4cu</td>\n",
       "      <td>16</td>\n",
       "      <td>show</td>\n",
       "      <td>view</td>\n",
       "      <td>p3</td>\n",
       "      <td>Windows Desktop</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>116057.0</td>\n",
       "      <td>3245.5</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>22n9cobcpk</td>\n",
       "      <td>72</td>\n",
       "      <td>show</td>\n",
       "      <td>view</td>\n",
       "      <td>-unknown-</td>\n",
       "      <td>Mac Desktop</td>\n",
       "      <td>28</td>\n",
       "      <td>7</td>\n",
       "      <td>23</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>1209080.0</td>\n",
       "      <td>2021.5</td>\n",
       "      <td>4.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>39.0</td>\n",
       "      <td>71.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>u0fkrhizzl</td>\n",
       "      <td>12</td>\n",
       "      <td>show</td>\n",
       "      <td>view</td>\n",
       "      <td>-unknown-</td>\n",
       "      <td>Android Phone</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>10474.0</td>\n",
       "      <td>751.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>gir1sb7mtg</td>\n",
       "      <td>29</td>\n",
       "      <td>show</td>\n",
       "      <td>view</td>\n",
       "      <td>user_profile</td>\n",
       "      <td>iPhone</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>67506.0</td>\n",
       "      <td>566.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>29.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 23 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      user_id  action_count action action_type action_detail      device_type  \\\n",
       "0  e8zzuy8rk1           152   show       click            p3  Windows Desktop   \n",
       "1  upvhlkz4cu            16   show        view            p3  Windows Desktop   \n",
       "2  22n9cobcpk            72   show        view     -unknown-      Mac Desktop   \n",
       "3  u0fkrhizzl            12   show        view     -unknown-    Android Phone   \n",
       "4  gir1sb7mtg            29   show        view  user_profile           iPhone   \n",
       "\n",
       "   unique_actions  unique_action_types  unique_action_details  \\\n",
       "0              22                    7                     17   \n",
       "1               8                    4                      7   \n",
       "2              28                    7                     23   \n",
       "3               7                    4                      6   \n",
       "4               6                    5                      8   \n",
       "\n",
       "   unique_device_types      ...        secs_elapsed_max  secs_elapsed_median  \\\n",
       "0                    1      ...               1220337.0                743.0   \n",
       "1                    1      ...                116057.0               3245.5   \n",
       "2                    1      ...               1209080.0               2021.5   \n",
       "3                    1      ...                 10474.0                751.0   \n",
       "4                    1      ...                 67506.0                566.0   \n",
       "\n",
       "   day_pauses  long_pauses  short_pauses  session_length  apple_device  \\\n",
       "0        18.0          5.0          99.0           142.0             0   \n",
       "1         1.0          0.0          10.0            16.0             0   \n",
       "2         4.0          2.0          39.0            71.0             1   \n",
       "3         0.0          0.0           9.0            12.0             0   \n",
       "4         0.0          0.0          16.0            29.0             1   \n",
       "\n",
       "   desktop_device  tablet_device  mobile_device  \n",
       "0               1              0              0  \n",
       "1               1              0              0  \n",
       "2               1              0              0  \n",
       "3               0              0              1  \n",
       "4               0              0              1  \n",
       "\n",
       "[5 rows x 23 columns]"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sessions_new.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(135483, 23)\n",
      "(213451, 16)\n",
      "(62096, 15)\n"
     ]
    }
   ],
   "source": [
    "print(sessions_new.shape)\n",
    "print(train.shape)\n",
    "print(test.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Users Data Exploring, Preprocessing & Feature Engineering"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Merge train and test with newly created sessions data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "# train = train.merge(sessions_new, left_on = train['id'], right_on = sessions_new['user_id'], how='inner')\n",
    "# test = test.merge(sessions_new, left_on = test['id'], right_on = sessions_new['user_id'], how = 'inner')\n",
    "# df = pd.concat([train,test])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "train1 = train.merge(sessions_new, left_on = train['id'], right_on = sessions_new['user_id'], how='inner')\n",
    "train2 = train[~train.id.isin(train1.id)]\n",
    "train = pd.concat([train1, train2])\n",
    "test1 = test.merge(sessions_new, left_on = test['id'], right_on = sessions_new['user_id'], how = 'inner')\n",
    "test2 = test[~test.id.isin(test1.id)]\n",
    "test = pd.concat([test1, test2])\n",
    "df = pd.concat([train,test])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>action</th>\n",
       "      <th>action_count</th>\n",
       "      <th>action_detail</th>\n",
       "      <th>action_type</th>\n",
       "      <th>affiliate_channel</th>\n",
       "      <th>affiliate_provider</th>\n",
       "      <th>age</th>\n",
       "      <th>apple_device</th>\n",
       "      <th>country_destination</th>\n",
       "      <th>date_account_created</th>\n",
       "      <th>...</th>\n",
       "      <th>signup_app</th>\n",
       "      <th>signup_flow</th>\n",
       "      <th>signup_method</th>\n",
       "      <th>tablet_device</th>\n",
       "      <th>timestamp_first_active</th>\n",
       "      <th>unique_action_details</th>\n",
       "      <th>unique_action_types</th>\n",
       "      <th>unique_actions</th>\n",
       "      <th>unique_device_types</th>\n",
       "      <th>user_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>show</td>\n",
       "      <td>127.0</td>\n",
       "      <td>p3</td>\n",
       "      <td>view</td>\n",
       "      <td>sem-non-brand</td>\n",
       "      <td>google</td>\n",
       "      <td>62.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>other</td>\n",
       "      <td>2014-01-01</td>\n",
       "      <td>...</td>\n",
       "      <td>Web</td>\n",
       "      <td>0</td>\n",
       "      <td>basic</td>\n",
       "      <td>0.0</td>\n",
       "      <td>20140101000936</td>\n",
       "      <td>10.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>17.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>d1mm9tcy42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>show</td>\n",
       "      <td>9.0</td>\n",
       "      <td>p3</td>\n",
       "      <td>view</td>\n",
       "      <td>direct</td>\n",
       "      <td>direct</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NDF</td>\n",
       "      <td>2014-01-01</td>\n",
       "      <td>...</td>\n",
       "      <td>Web</td>\n",
       "      <td>0</td>\n",
       "      <td>basic</td>\n",
       "      <td>0.0</td>\n",
       "      <td>20140101001558</td>\n",
       "      <td>8.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>yo8nz8bqcq</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>create</td>\n",
       "      <td>16.0</td>\n",
       "      <td>-unknown-</td>\n",
       "      <td>-unknown-</td>\n",
       "      <td>sem-brand</td>\n",
       "      <td>google</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NDF</td>\n",
       "      <td>2014-01-01</td>\n",
       "      <td>...</td>\n",
       "      <td>Web</td>\n",
       "      <td>0</td>\n",
       "      <td>basic</td>\n",
       "      <td>0.0</td>\n",
       "      <td>20140101001639</td>\n",
       "      <td>8.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4grx6yxeby</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>ajax_refresh_subtotal</td>\n",
       "      <td>152.0</td>\n",
       "      <td>change_trip_characteristics</td>\n",
       "      <td>click</td>\n",
       "      <td>direct</td>\n",
       "      <td>direct</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NDF</td>\n",
       "      <td>2014-01-01</td>\n",
       "      <td>...</td>\n",
       "      <td>Web</td>\n",
       "      <td>0</td>\n",
       "      <td>basic</td>\n",
       "      <td>0.0</td>\n",
       "      <td>20140101002146</td>\n",
       "      <td>13.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>ncf87guaf0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>index</td>\n",
       "      <td>8.0</td>\n",
       "      <td>-unknown-</td>\n",
       "      <td>-unknown-</td>\n",
       "      <td>direct</td>\n",
       "      <td>direct</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>GB</td>\n",
       "      <td>2014-01-01</td>\n",
       "      <td>...</td>\n",
       "      <td>iOS</td>\n",
       "      <td>25</td>\n",
       "      <td>basic</td>\n",
       "      <td>0.0</td>\n",
       "      <td>20140101002619</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4rvqpxoh3h</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 39 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                  action  action_count                action_detail  \\\n",
       "0                   show         127.0                           p3   \n",
       "1                   show           9.0                           p3   \n",
       "2                 create          16.0                    -unknown-   \n",
       "3  ajax_refresh_subtotal         152.0  change_trip_characteristics   \n",
       "4                  index           8.0                    -unknown-   \n",
       "\n",
       "  action_type affiliate_channel affiliate_provider   age  apple_device  \\\n",
       "0        view     sem-non-brand             google  62.0           0.0   \n",
       "1        view            direct             direct   NaN           1.0   \n",
       "2   -unknown-         sem-brand             google   NaN           0.0   \n",
       "3       click            direct             direct   NaN           0.0   \n",
       "4   -unknown-            direct             direct   NaN           1.0   \n",
       "\n",
       "  country_destination date_account_created     ...     signup_app  \\\n",
       "0               other           2014-01-01     ...            Web   \n",
       "1                 NDF           2014-01-01     ...            Web   \n",
       "2                 NDF           2014-01-01     ...            Web   \n",
       "3                 NDF           2014-01-01     ...            Web   \n",
       "4                  GB           2014-01-01     ...            iOS   \n",
       "\n",
       "   signup_flow  signup_method tablet_device timestamp_first_active  \\\n",
       "0            0          basic           0.0         20140101000936   \n",
       "1            0          basic           0.0         20140101001558   \n",
       "2            0          basic           0.0         20140101001639   \n",
       "3            0          basic           0.0         20140101002146   \n",
       "4           25          basic           0.0         20140101002619   \n",
       "\n",
       "  unique_action_details unique_action_types unique_actions  \\\n",
       "0                  10.0                 7.0           17.0   \n",
       "1                   8.0                 4.0            7.0   \n",
       "2                   8.0                 6.0           13.0   \n",
       "3                  13.0                 7.0           19.0   \n",
       "4                   1.0                 1.0            7.0   \n",
       "\n",
       "  unique_device_types     user_id  \n",
       "0                 2.0  d1mm9tcy42  \n",
       "1                 1.0  yo8nz8bqcq  \n",
       "2                 2.0  4grx6yxeby  \n",
       "3                 3.0  ncf87guaf0  \n",
       "4                 1.0  4rvqpxoh3h  \n",
       "\n",
       "[5 rows x 39 columns]"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "action                     140064\n",
       "action_count               140064\n",
       "action_detail              140064\n",
       "action_type                140064\n",
       "affiliate_channel               0\n",
       "affiliate_provider              0\n",
       "age                        116866\n",
       "apple_device               140064\n",
       "country_destination         62096\n",
       "date_account_created            0\n",
       "date_first_booking         186639\n",
       "day_pauses                 140064\n",
       "desktop_device             140064\n",
       "device_type                140064\n",
       "first_affiliate_tracked      6085\n",
       "first_browser                   0\n",
       "first_device_type               0\n",
       "gender                          0\n",
       "id                              0\n",
       "language                        0\n",
       "long_pauses                140064\n",
       "mobile_device              140064\n",
       "secs_elapsed_max           140064\n",
       "secs_elapsed_mean          140064\n",
       "secs_elapsed_median        140064\n",
       "secs_elapsed_min           140064\n",
       "secs_elapsed_sum           140064\n",
       "session_length             140064\n",
       "short_pauses               140064\n",
       "signup_app                      0\n",
       "signup_flow                     0\n",
       "signup_method                   0\n",
       "tablet_device              140064\n",
       "timestamp_first_active          0\n",
       "unique_action_details      140064\n",
       "unique_action_types        140064\n",
       "unique_actions             140064\n",
       "unique_device_types        140064\n",
       "user_id                    140064\n",
       "dtype: int64"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.drop(['user_id', 'date_first_booking'], axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Missing values\n",
    "\n",
    "Because there are many users in users data that do not appear in the sessions dataframe, therefore, all of their session values are null. Let's sort out those nulls values first. We will fill categorical nulls with \"missing\" and fill continuous nulls with 0."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "def missing_session_data_cat(feature):\n",
    "    return df[feature].fillna(\"missing\")\n",
    "\n",
    "def missing_session_data_cont(feature):\n",
    "    return df[feature].fillna(0)\n",
    "\n",
    "session_features_cat = ['action','action_detail','action_type','device_type']\n",
    "session_features_cont = ['action_count','apple_device','desktop_device','mobile_device','tablet_device',\n",
    "                         'secs_elapsed_max','secs_elapsed_mean','secs_elapsed_median','secs_elapsed_min', 'secs_elapsed_sum', \n",
    "                         'session_length', 'short_pauses', 'long_pauses', 'day_pauses', 'unique_action_details', 'unique_action_types', \n",
    "                         'unique_actions','unique_device_types']\n",
    "\n",
    "for feature in session_features_cat:\n",
    "    df[feature] = missing_session_data_cat(feature)\n",
    "    \n",
    "for feature in session_features_cont:\n",
    "    df[feature] = missing_session_data_cont(feature)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "By doing so, we are able to eliminate most of the nulls."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "action                          0\n",
       "action_count                    0\n",
       "action_detail                   0\n",
       "action_type                     0\n",
       "affiliate_channel               0\n",
       "affiliate_provider              0\n",
       "age                        116866\n",
       "apple_device                    0\n",
       "country_destination         62096\n",
       "date_account_created            0\n",
       "day_pauses                      0\n",
       "desktop_device                  0\n",
       "device_type                     0\n",
       "first_affiliate_tracked      6085\n",
       "first_browser                   0\n",
       "first_device_type               0\n",
       "gender                          0\n",
       "id                              0\n",
       "language                        0\n",
       "long_pauses                     0\n",
       "mobile_device                   0\n",
       "secs_elapsed_max                0\n",
       "secs_elapsed_mean               0\n",
       "secs_elapsed_median             0\n",
       "secs_elapsed_min                0\n",
       "secs_elapsed_sum                0\n",
       "session_length                  0\n",
       "short_pauses                    0\n",
       "signup_app                      0\n",
       "signup_flow                     0\n",
       "signup_method                   0\n",
       "tablet_device                   0\n",
       "timestamp_first_active          0\n",
       "unique_action_details           0\n",
       "unique_action_types             0\n",
       "unique_actions                  0\n",
       "unique_device_types             0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.isnull().sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "By doing so, we are able to eliminate most of the nulls."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 364,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Group action_count into quartiles.\n",
    "# df['action_count_quartile'] = df.action_count.map(lambda x: 0 if x == 0 else (\n",
    "#                                                            1 if x <= 17 else (\n",
    "#                                                            2 if x <= 43 else (\n",
    "#                                                            3 if x <= 97 else 4))))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Users age feature"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    158681.000000\n",
       "mean         47.145310\n",
       "std         142.629468\n",
       "min           1.000000\n",
       "25%          28.000000\n",
       "50%          33.000000\n",
       "75%          42.000000\n",
       "max        2014.000000\n",
       "Name: age, dtype: float64"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[df.age.notnull()].age.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The maximum age is 2014, this is not possible. It seems that some users have filled a year instead of their age. Also the minimun age at 1 sounds rediculous. According to Airbnb's contract, users at the platform must be at least 18 years old. However, this is not enforced."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count     828.000000\n",
       "mean     2007.117150\n",
       "std        22.219408\n",
       "min      1920.000000\n",
       "25%      2014.000000\n",
       "50%      2014.000000\n",
       "75%      2014.000000\n",
       "max      2014.000000\n",
       "Name: age, dtype: float64"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc[df['age'] > 1000]['age'].describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    188.000000\n",
       "mean      12.718085\n",
       "std        5.764569\n",
       "min        1.000000\n",
       "25%        5.000000\n",
       "50%       16.000000\n",
       "75%       17.000000\n",
       "max       17.000000\n",
       "Name: age, dtype: float64"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc[df['age'] < 18]['age'].describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "So we first correct mistakenly filled the age."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_with_year = df['age'] > 1000\n",
    "df.loc[df_with_year, 'age'] = 2015 - df.loc[df_with_year, 'age']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    158681.000000\n",
       "mean         36.713274\n",
       "std          14.046364\n",
       "min           1.000000\n",
       "25%          28.000000\n",
       "50%          33.000000\n",
       "75%          42.000000\n",
       "max         150.000000\n",
       "Name: age, dtype: float64"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.age.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "After that, the Maximum age at 150 were not realistic, we will set max limit at 90, and bring down to 90 for anyone who is over 90 years old."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.loc[df.age > 90, 'age'] = 90"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\SusanLi\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\scipy\\stats\\stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x27314570630>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "\n",
    "plt.figure(figsize=(12,6))\n",
    "sns.distplot(df.age.dropna(), rug=True)\n",
    "sns.despine()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As expected, the most common age of Airbnb users is between 25 and 40. There are still too many nulls in age column. We are going to set the missing values equal to the median at 33. Before doing that, we create a new column for age_group."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "df['age_group'] = df.age.map(lambda x: 0 if math.isnan(x) else (\n",
    "                                       1 if x < 18 else (\n",
    "                                       2 if x <= 32 else (\n",
    "                                       3 if x <= 42 else 4))))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.age = df.age.fillna(33)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Users gender"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-unknown-    129480\n",
       "FEMALE        77524\n",
       "MALE          68209\n",
       "OTHER           334\n",
       "Name: gender, dtype: int64"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.gender.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuoAAAGDCAYAAAB9dDWpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XucJWV95/HPl+EieAN1JMiAkDCrQYyujogaES+RISqo0QghYSSsRBcva8wquioGdaPRSCSLZsmCDMaIBI2gQZGgoCaCDIjCgIQJGJiAMgSQm4LAb/+op+VM05czl9NdPf15v17n1VW/euqpp5rzOnyn+qk6qSokSZIk9ctmsz0ASZIkSQ9mUJckSZJ6yKAuSZIk9ZBBXZIkSeohg7okSZLUQwZ1SZIkqYcM6pKkX0ry2iTfHmH/70vyt2155yR3JFmwkfr+6yTvacv7JFm9Mfpt/T03yZUbqz9JGoZBXZIGJKkku42r/TJcauOpqmur6mFVdd9U7Yb9x0NVvb6q3r8xxjb+fVBV36qqJ2yMviVpWAZ1SZoFSTaf7TFsbBvryvhcO7YkjYpBXZLWQZLHJPlykluT3JzkW0k2a9sel+TzSdYkuSbJmwf2e1+S05L8bZLbgNcm2TPJiiS3JflJko9Ncdy3J7khyfVJ/tvgFd8kWyX5aJJrWz9/nWTrtm2fJKuTvC3Jja2PQwf6fXSSM9oYvgv82rjjPjHJ2e1cr0zyuwPbTkryySRnJrkTeP4E4941yXlJbk9yNvCYgW27tPPYvK2/NsnVre01SQ5O8uvAXwPPatNkbp3s2K32gXHHf1eSm5L8KMnBA/Vzk/y3gfVfXrVP8s1W/n475mvGT6VJ8uutj1uTrEyy/7jfy3FJ/rGdywVJ1vq9StIwDOqStG7eBqwGFgLbA+8CqoX1LwHfB3YEXgj8jyT7Dux7AHAasC3wGeDjwMer6hF0AfnUiQ6YZCnwx8CLgN2A541r8mHgvwBPbdt3BN47sP1XgEe2+mHAcUm2a9uOA34O7AD8YXuNHfehwNnA3wGPBQ4CPpHkSQN9/x7wQeDhwETTU/4OuIguoL8fWDbJOT4UOBbYr6oeDjwbuKSqrgBeD3ynTZPZdh2O/SvtuDu24x6fZNrpK1W1d1t8Sjvm58aNdQu6/9Zfo/u9vAn4zLi+DwL+FNgOWNXGKUnrxKAuSevmF3Sh9vFV9Ys2d7mAZwALq+roqrqnqq4G/gY4cGDf71TVF6vq/qr6WetrtySPqao7qur8SY75u8CnqmplVd1FFwABSBLgdcBbq+rmqrod+N/jjvsL4Og23jOBO4AntOkivwO8t6rurKrLgOUD+70U+FFVfaqq7q2qi4HPA68aaHN6Vf1zO6efDw46yc7t9/Keqrq7qr5JF3Ancz+wR5Ktq+qGqlo5Rdspjz1g7NjnAf9I97vcUHsBDwM+1P5bfx34Ml04H/OFqvpuVd1L94+yp26E40qaZwzqkrS2+4AtxtW2oAu7AB+hu0L6tTZN48hWfzzwuDYV4tY2ReNddFfdx1w3rt/D6K6E/zDJhUleOsmYHjdu38HlhcA2wEUDx/1qq4/5zxYYx9xFFzQXApuP6+/fB5YfDzxz3DkdTHelerJzGj/uW6rqzkn6/6XW5jV0V89vaNNGnjhF39Mdm0mO/bhp9hnG44Drqur+cX3vOLD+44Hlsd+3JK2TTe5mJknaQNcCuwBXDNR2Bf4VoF2xfhvwtjYF5BtJLqQLjddU1eIp+q61VqquAg5q02ZeCZyW5NHjwiXADcCigfWdBpZvAn4GPKmq/mO4U/ylNcC9rb8fttrOA9uvA86rqt+aoo+aYtsNwHZJHjpwTjtPtk9VnQWc1ebXf4DuLxLPneIYUx2bSY59WVu+k+4fOGN+heFdD+yUZLOBsL4z7T0iSRuLV9QlaW2fA96dZFGSzZK8CHgZ3dxykrw0yW5tysltdFfg7wO+C9yW5B1Jtk6yIMkeSZ4x2YGS/H6ShS3s3drKEz2q8FTg0HYD4zYMzD9v+/4NcEySx7Z+dxw3N35C7bGIXwDel2SbJLuz9hzyLwP/JckfJNmivZ7RbvCcVlX9O7AC+NMkWyb5Tbrf5YMk2T7J/m2u+t1003PGfhc/ARYl2XKY444zduzn0k3l+ftWvwR4ZTvv3ej+ujHoJ8CvTtLnBXRB/+3td7JPO69T1mN8kjQpg7okre1o4F/obk68Bfhz4OA2fxtgMfBPdEHyO8AnqurcFnpfRjcX+Rq6K93/j+4mzsksBVYmuYPuxtIDJ5prXVVfobvR8ht0026+0zbd3X6+o9XPT/dEmX8Chn3m9xvppmX8GDgJ+NTAcW8HXkw33/361ubDwFZD9g3dDZ/PBG4GjgJOnqTdZnR/qbi+tX0e8N/btq8DK4EfJ7lpHY79Y7r/htfTzRN/fVWN/eXgGOAeukC+vG0f9D5geZvys9a89qq6B9gf2I/uv/MngEMG+pakjSLdPVCSpLmiXdG+DNhq3NxzSdImxCvqkjQHJHlFm8KxHd1V7S8Z0iVp02ZQl6S54Y/obv78N7q522+Y3eFIkkbNqS+SJElSD3lFXZIkSeohg7okSZLUQ37hUbN06dL66le/OtvDkCRJ0qYvwzTyinpz003r8mheSZIkabQM6pIkSVIPGdQlSZKkHjKoS5IkST1kUJckSZJ6yKAuSZIk9ZBBXZIkSeohg7okSZLUQwZ1SZIkqYcM6pIkSVIPGdQlSZKkHjKoS5IkST1kUJckSZJ6yKAuSZIk9dDmsz0ASaN37dFPnu0hqId2fu+lsz0ESdIUvKIuSZIk9ZBBXZIkSeohg7okSZLUQwZ1SZIkqYcM6pIkSVIPGdQlSZKkHjKoS5IkST1kUJckSZJ6yKAuSZIk9ZBBXZIkSeohg7okSZLUQwZ1SZIkqYcM6pIkSVIPGdQlSZKkHjKoS5IkST1kUJckSZJ6yKAuSZIk9ZBBXZIkSeqhkQX1JCcmuTHJZQO1jyT5YZIfJPmHJNsObHtnklVJrkyy70B9aautSnLkQH3XJBckuSrJ55Js2epbtfVVbfsuozpHSZIkaVRGeUX9JGDpuNrZwB5V9RvAvwLvBEiyO3Ag8KS2zyeSLEiyADgO2A/YHTiotQX4MHBMVS0GbgEOa/XDgFuqajfgmNZOkiRJmlNGFtSr6pvAzeNqX6uqe9vq+cCitnwAcEpV3V1V1wCrgD3ba1VVXV1V9wCnAAckCfAC4LS2/3Lg5QN9LW/LpwEvbO0lSZKkOWM256j/IfCVtrwjcN3AttWtNln90cCtA6F/rL5WX237T1t7SZIkac6YlaCe5H8B9wKfGStN0KzWoz5VXxON4/AkK5KsWLNmzdSDliRJkmbQjAf1JMuAlwIHV9VYgF4N7DTQbBFw/RT1m4Btk2w+rr5WX237Ixk3BWdMVR1fVUuqasnChQs39NQkSZKkjWZGg3qSpcA7gP2r6q6BTWcAB7YntuwKLAa+C1wILG5PeNmS7obTM1rA/wbwqrb/MuD0gb6WteVXAV8f+AeBJEmSNCdsPn2T9ZPks8A+wGOSrAaOonvKy1bA2e3+zvOr6vVVtTLJqcDldFNijqiq+1o/bwTOAhYAJ1bVynaIdwCnJPkA8D3ghFY/Afh0klV0V9IPHNU5SpIkSaMSLzZ3lixZUitWrJjtYUgjce3RT57tIaiHdn7vpbM9BEmar4Z6IqHfTCpJkiT1kEFdkiRJ6iGDuiRJktRDBnVJkiSphwzqkiRJUg8Z1CVJkqQeMqhLkiRJPWRQlyRJknrIoC5JkiT1kEFdkiRJ6iGDuiRJktRDBnVJkiSphwzqkiRJUg8Z1CVJkqQeMqhLkiRJPWRQlyRJknrIoC5JkiT1kEFdkiRJ6iGDuiRJktRDBnVJkiSphwzqkiRJUg8Z1CVJkqQeMqhLkiRJPWRQlyRJknrIoC5JkiT1kEFdkiRJ6iGDuiRJktRDBnVJkiSphwzqkiRJUg8Z1CVJkqQeMqhLkiRJPWRQlyRJknrIoC5JkiT1kEFdkiRJ6iGDuiRJktRDBnVJkiSphwzqkiRJUg8Z1CVJkqQeMqhLkiRJPTSyoJ7kxCQ3JrlsoPaoJGcnuar93K7Vk+TYJKuS/CDJ0wb2WdbaX5Vk2UD96UkubfscmyRTHUOSJEmaS0Z5Rf0kYOm42pHAOVW1GDinrQPsByxur8OBT0IXuoGjgGcCewJHDQTvT7a2Y/stneYYkiRJ0pwxsqBeVd8Ebh5XPgBY3paXAy8fqJ9cnfOBbZPsAOwLnF1VN1fVLcDZwNK27RFV9Z2qKuDkcX1NdAxJkiRpzpjpOerbV9UNAO3nY1t9R+C6gXarW22q+uoJ6lMdQ5IkSZoz+nIzaSao1XrU1+2gyeFJViRZsWbNmnXdXZIkSRqZmQ7qP2nTVmg/b2z11cBOA+0WAddPU180QX2qYzxIVR1fVUuqasnChQvX+6QkSZKkjW2mg/oZwNiTW5YBpw/UD2lPf9kL+GmbtnIW8OIk27WbSF8MnNW23Z5kr/a0l0PG9TXRMSRJkqQ5Y/NRdZzks8A+wGOSrKZ7esuHgFOTHAZcC7y6NT8T+G1gFXAXcChAVd2c5P3Aha3d0VU1doPqG+ieLLM18JX2YopjSJIkSXPGyIJ6VR00yaYXTtC2gCMm6edE4MQJ6iuAPSao/+dEx5AkSZLmkr7cTCpJkiRpgEFdkiRJ6iGDuiRJktRDBnVJkiSphwzqkiRJUg8Z1CVJkqQeMqhLkiRJPWRQlyRJknrIoC5JkiT1kEFdkiRJ6iGDuiRJktRDBnVJkiSphwzqkiRJUg8Z1CVJkqQeMqhLkiRJPWRQlyRJknrIoC5JkiT1kEFdkiRJ6iGDuiRJktRDBnVJkiSphwzqkiRJUg8Z1CVJkqQeMqhLkiRJPWRQlyRJknrIoC5JkiT1kEFdkiRJ6iGDuiRJktRDBnVJkiSphwzqkiRJUg8Z1CVJkqQeMqhLkiRJPWRQlyRJknpo2qCe5NeSbNWW90ny5iTbjn5okiRJ0vw1zBX1zwP3JdkNOAHYFfi7kY5KkiRJmueGCer3V9W9wCuAv6yqtwI7jHZYkiRJ0vw2TFD/RZKDgGXAl1tti9ENSZIkSdIwQf1Q4FnAB6vqmiS7An872mFJkiRJ89vmU21MsgB4V1X9/litqq4BPjTqgUmSJEnz2ZRX1KvqPmBhki1naDySJEmSGG7qy4+Af07yniR/PPbakIMmeWuSlUkuS/LZJA9JsmuSC5JcleRzY/84SLJVW1/Vtu8y0M87W/3KJPsO1Je22qokR27IWCVJkqTZMExQv57uJtLNgIcPvNZLkh2BNwNLqmoPYAFwIPBh4JiqWgzcAhzWdjkMuKWqdgOOae1Isnvb70nAUuATSRa06TrHAfsBuwMHtbaSJEnSnDHlHHWAqvpTgCQPrao7N+Jxt07yC2Ab4AbgBcDvte3LgfcBnwQOaMsApwH/J0la/ZSquhu4JskqYM/WblVVXd3GfUpre/lGGrskSZI0csN8M+mzklwOXNHWn5LkE+t7wKr6D+CjwLV0Af2nwEXAre157QCrgR3b8o7AdW3fe1v7Rw/Wx+0zWV2SJEmaM4aZ+vKXwL7AfwJU1feBvdf3gEm2o7vCvSvwOOChdNNUxquxXSbZtq71icZyeJIVSVasWbNmuqFLkiRJM2aYoE5VXTeudN8GHPNFwDVVtaaqfgF8AXg2sG2Ssak4i+jmxkN3RXwngLb9kcDNg/Vx+0xWf5CqOr6qllTVkoULF27AKUmSJEkb1zBB/bokzwYqyZZJ/oQ2DWY9XQvslWSbNtf8hXTzx78BvKq1WQac3pbPaOu07V+vqmr1A9tTYXYFFgPfBS4EFrenyGxJd8PpGRswXkmSJGnGTXszKfB64ON087xXA18DjljfA1bVBUlOAy4G7gW+BxwP/CNwSpIPtNoJbZcTgE+3m0VvpgveVNXKJKfShfx7gSPac99J8kbgLLonypxYVSvXd7ySJEnSbEh3cVpLliypFStWzPYwpJG49ugnz/YQ1EM7v/fS2R6CJM1XE91T+SDDPPXlz5M8IskWSc5JclOS39/w8UmSJEmazDBTX15cVW9P8gq6qS+vpptP/rcjHZkkaZP3nL96zmwPQT30z2/659kegtQLw9xMukX7+dvAZ6vq5hGOR5IkSRLDXVH/UpIfAj8D/nuShcDPRzssSZIkaX6b9op6VR0JPAtY0p57fifdFxZJkiRJGpFpr6gnOWRgeXDTyaMYkCRJkqThpr48Y2D5IXRfUHQxBnVJkiRpZKYN6lX1psH1JI8EPj2yEUmSJEka6qkv490FLN7YA5EkSZL0gGHmqH8JGPv60s2A3YFTRzkoSZIkab4bZo76RweW7wX+vapWj2g8kiRJkhhujvp5MzEQSZIkSQ9YnznqkiRJkkbMoC5JkiT10KRBPck57eeHZ244kiRJkmDqOeo7JHkesH+SU4C1vpa0qi4e6cgkSZKkeWyqoP5e4EhgEfCxcdsKeMGoBiVJkiTNd5MG9ao6DTgtyXuq6v0zOCZJkiRp3hvm8YzvT7I/sHcrnVtVXx7tsCRJkqT5bdqnviT5M+AtwOXt9ZZWkyRJkjQiw3wz6UuAp1bV/QBJlgPfA945yoFJkiRJ89mwz1HfdmD5kaMYiCRJkqQHDHNF/c+A7yX5Bt0jGvfGq+mSJEnSSA1zM+lnk5wLPIMuqL+jqn486oHNRU//nyfP9hDUQxd95JDZHoIkSZqDhrmiTlXdAJwx4rFIkiRJaoadoy5JkiRpBhnUJUmSpB6aMqgn2SzJZTM1GEmSJEmdKYN6e3b695PsPEPjkSRJksRwN5PuAKxM8l3gzrFiVe0/slFJkiRJ89wwQf1PRz4KSZIkSWsZ5jnq5yV5PLC4qv4pyTbAgtEPTZIkSZq/pn3qS5LXAacB/7eVdgS+OMpBSZIkSfPdMI9nPAJ4DnAbQFVdBTx2lIOSJEmS5rthgvrdVXXP2EqSzYEa3ZAkSZIkDRPUz0vyLmDrJL8F/D3wpdEOS5IkSZrfhgnqRwJrgEuBPwLOBN49ykFJkiRJ890wT325P8ly4AK6KS9XVpVTXyRJkqQRmjaoJ3kJ8NfAvwEBdk3yR1X1lVEPTpIkSZqvhpn68hfA86tqn6p6HvB84JgNOWiSbZOcluSHSa5I8qwkj0pydpKr2s/tWtskOTbJqiQ/SPK0gX6WtfZXJVk2UH96kkvbPscmyYaMV5IkSZppwwT1G6tq1cD61cCNG3jcjwNfraonAk8BrqCbC39OVS0GzmnrAPsBi9vrcOCTAEkeBRwFPBPYEzhqLNy3NocP7Ld0A8crSZIkzahJp74keWVbXJnkTOBUujnqrwYuXN8DJnkEsDfwWoD26Md7khwA7NOaLQfOBd4BHACc3ObFn9+uxu/Q2p5dVTe3fs8GliY5F3hEVX2n1U8GXg44VUeSJElzxlRz1F82sPwT4HlteQ2w3YObD+1XWx+fSvIU4CLgLcD2VXUDQFXdkGTsS5V2BK4b2H91q01VXz1BXZIkSZozJg3qVXXoCI/5NOBNVXVBko/zwDSXiUw0v7zWo/7gjpPD6abIsPPOO081ZkmSJGlGTTtHPcmuST6W5AtJzhh7bcAxVwOrq+qCtn4aXXD/SZvSQvt540D7nQb2XwRcP0190QT1B6mq46tqSVUtWbhw4QackiRJkrRxDXMz6ReBHwF/RfcEmLHXeqmqHwPXJXlCK70QuBw4Axh7cssy4PS2fAZwSHv6y17AT9sUmbOAFyfZrt1E+mLgrLbt9iR7tae9HDLQlyRJkjQnTPscdeDnVXXsRj7um4DPJNmS7ikyh9L9o+HUJIcB19LdtArdN6H+NrAKuKu1papuTvJ+Hrix9eixG0uBNwAnAVvT3UTqjaSSJEmaU4YJ6h9PchTwNeDusWJVXby+B62qS4AlE2x64QRtCzhikn5OBE6coL4C2GN9xydJkiTNtmGC+pOBPwBeANzfatXWJUmSJI3AMEH9FcCvtuedS5IkSZoBw9xM+n1g21EPRJIkSdIDhrmivj3wwyQXsvYc9f1HNipJkiRpnhsmqB818lFIkiRJWsu0Qb2qzpuJgUiSJEl6wLRBPcntdE95AdgS2AK4s6oeMcqBSZIkSfPZMFfUHz64nuTlwJ4jG5EkSZKkoZ76spaq+iI+Q12SJEkaqWGmvrxyYHUzum8UrUmaS5IkSdoIhnnqy8sGlu8FfgQcMJLRSJIkSQKGm6N+6EwMRJIkSdIDJg3qSd47xX5VVe8fwXgkSZIkMfUV9TsnqD0UOAx4NGBQlyRJkkZk0qBeVX8xtpzk4cBbgEOBU4C/mGw/SZIkSRtuyjnqSR4F/DFwMLAceFpV3TITA5MkSZLms6nmqH8EeCVwPPDkqrpjxkYlSZIkzXNTfeHR24DHAe8Grk9yW3vdnuS2mRmeJEmSND9NNUd9nb+1VJIkSdLGYRiXJEmSesigLkmSJPWQQV2SJEnqIYO6JEmS1EMGdUmSJKmHDOqSJElSDxnUJUmSpB4yqEuSJEk9ZFCXJEmSesigLkmSJPWQQV2SJEnqIYO6JEmS1EMGdUmSJKmHDOqSJElSDxnUJUmSpB4yqEuSJEk9ZFCXJEmSesigLkmSJPWQQV2SJEnqIYO6JEmS1EOzFtSTLEjyvSRfbuu7JrkgyVVJPpdky1bfqq2vatt3Gejjna1+ZZJ9B+pLW21VkiNn+twkSZKkDTWbV9TfAlwxsP5h4JiqWgzcAhzW6ocBt1TVbsAxrR1JdgcOBJ4ELAU+0cL/AuA4YD9gd+Cg1laSJEmaM2YlqCdZBLwE+H9tPcALgNNak+XAy9vyAW2dtv2Frf0BwClVdXdVXQOsAvZsr1VVdXVV3QOc0tpKkiRJc8ZsXVH/S+DtwP1t/dHArVV1b1tfDezYlncErgNo23/a2v+yPm6fyeqSJEnSnDHjQT3JS4Ebq+qiwfIETWuabetan2gshydZkWTFmjVrphi1JEmSNLNm44r6c4D9k/yIblrKC+iusG+bZPPWZhFwfVteDewE0LY/Erh5sD5un8nqD1JVx1fVkqpasnDhwg0/M0mSJGkjmfGgXlXvrKpFVbUL3c2gX6+qg4FvAK9qzZYBp7flM9o6bfvXq6pa/cD2VJhdgcXAd4ELgcXtKTJbtmOcMQOnJkmSJG00m0/fZMa8AzglyQeA7wEntPoJwKeTrKK7kn4gQFWtTHIqcDlwL3BEVd0HkOSNwFnAAuDEqlo5o2ciSZIkbaBZDepVdS5wblu+mu6JLePb/Bx49ST7fxD44AT1M4EzN+JQJUmSpBnlN5NKkiRJPWRQlyRJknrIoC5JkiT1kEFdkiRJ6iGDuiRJktRDBnVJkiSphwzqkiRJUg8Z1CVJkqQeMqhLkiRJPWRQlyRJknrIoC5JkiT1kEFdkiRJ6iGDuiRJktRDBnVJkiSphwzqkiRJUg8Z1CVJkqQeMqhLkiRJPWRQlyRJknrIoC5JkiT1kEFdkiRJ6iGDuiRJktRDBnVJkiSphwzqkiRJUg8Z1CVJkqQeMqhLkiRJPWRQlyRJknrIoC5JkiT1kEFdkiRJ6iGDuiRJktRDBnVJkiSphwzqkiRJUg8Z1CVJkqQeMqhLkiRJPWRQlyRJknrIoC5JkiT1kEFdkiRJ6iGDuiRJktRDBnVJkiSphwzqkiRJUg/NeFBPslOSbyS5IsnKJG9p9UclOTvJVe3ndq2eJMcmWZXkB0meNtDXstb+qiTLBupPT3Jp2+fYJJnp85QkSZI2xGxcUb8XeFtV/TqwF3BEkt2BI4FzqmoxcE5bB9gPWNxehwOfhC7YA0cBzwT2BI4aC/etzeED+y2dgfOSJEmSNpoZD+pVdUNVXdyWbweuAHYEDgCWt2bLgZe35QOAk6tzPrBtkh2AfYGzq+rmqroFOBtY2rY9oqq+U1UFnDzQlyRJkjQnzOoc9SS7AP8VuADYvqpugC7MA49tzXYErhvYbXWrTVVfPUFdkiRJmjNmLagneRjweeB/VNVtUzWdoFbrUZ9oDIcnWZFkxZo1a6YbsiRJkjRjZiWoJ9mCLqR/pqq+0Mo/adNWaD9vbPXVwE4Duy8Crp+mvmiC+oNU1fFVtaSqlixcuHDDTkqSJEnaiGbjqS8BTgCuqKqPDWw6Axh7cssy4PSB+iHt6S97AT9tU2POAl6cZLt2E+mLgbPattuT7NWOdchAX5IkSdKcsPksHPM5wB8Alya5pNXeBXwIODXJYcC1wKvbtjOB3wZWAXcBhwJU1c1J3g9c2NodXVU3t+U3ACcBWwNfaS9JkiRpzpjxoF5V32bieeQAL5ygfQFHTNLXicCJE9RXAHtswDAlSZKkWeU3k0qSJEk9ZFCXJEmSesigLkmSJPWQQV2SJEnqIYO6JEmS1EMGdUmSJKmHDOqSJElSDxnUJUmSpB4yqEuSJEk9ZFCXJEmSesigLkmSJPWQQV2SJEnqIYO6JEmS1EMGdUmSJKmHDOqSJElSDxnUJUmSpB4yqEuSJEk9ZFCXJEmSesigLkmSJPWQQV2SJEnqIYO6JEmS1EMGdUmSJKmHDOqSJElSDxnUJUmSpB4yqEuSJEk9ZFCXJEmSesigLkmSJPWQQV2SJEnqIYO6JEmS1EMGdUmSJKmHDOqSJElSDxnUJUmSpB4yqEuSJEk9ZFCXJEmSesigLkmSJPWQQV2SJEnqIYO6JEmS1EMGdUmSJKmHDOqSJElSD22yQT3J0iRXJlmV5MjZHo8kSZK0LjbJoJ5kAXAcsB+wO3BQkt1nd1SSJEnS8DbJoA7sCayqqqur6h7gFOCAWR6TJEmSNLTNZ3sAI7IjcN3A+mrgmbM0FkmSNAedt/fzZnsI6qHnffO8GTvWphrUM0GtHtQoORw4vK3ekeTKkY5qfnkMcNNsD6IP8tFlsz0Erc335pijJvqo1Czyvdnkzb43e8j355hslPfnV6tq6XSNNtWgvhrYaWB9EXD9+EZVdTxw/EwNaj5JsqKqlsz2OKTxfG+qr3xvqs98f86OTXWO+oXA4iS7JtkSOBA4Y5bHJEmSJA1tk7yiXlX3JnkjcBawADixqlbO8rAkSZKkoW2SQR2gqs7ZD8txAAAGt0lEQVQEzpztccxjTilSX/neVF/53lSf+f6cBal60D2WkiRJkmbZpjpHXZIkSZrTDOqaVpJK8umB9c2TrEny5XHtTk/ynXG19yX5kwn6vC/JJQOvI0d3BpoPkpybxCcSaMZN8Hm2S5J9kvx0XP1Frb2fqZpxSRa199RVSf4tyceT7DvwnrkjyZVt+eT2Hh7/njwpyava8rkD7S9Jclqrvy/Jf7Ta5UkOmo3z3VRssnPUtVHdCeyRZOuq+hnwW8B/DDZIsi3wNLrn0e9aVddM0+fPquqpoxmuJM2oB32eJdkF+FZVvXSC9n6makYlCfAF4JNVdUCSBXRzzl809r5Jci7wJ1W1oq3vM0TXB4+1H+eYqvpoksXARUlOq6pfbIxzmW+8oq5hfQV4SVs+CPjsuO2/A3wJOIXucZjSeht/1TDJZe0q5S5JrkjyN0lWJvlakq3H7btZkuVJPtDW70jywSTfT3J+ku1b/fFJzknyg/Zz5yQLklydzrZJ7k+yd2v/rSS7tbGd2K4mXZ3kzTP5u9Emw89UzaQXAD+vqk8BVNV9wFuBP0yyzagOWlVXAXcB243qGJs6g7qGdQpwYJKHAL8BXDBu+9j/aD7blqez9bg/075m4w5Xm7DFwHFV9STgVrpAM2Zz4DPAv1bVu1vtocD5VfUU4JvA61r9/wAnV9VvtH2Obf/z+ldgd+A3gYuA5ybZClhUVavavk8E9gX2BI5KssVoTlVzxODn2T8M1J877nPu1wa2+ZmqmfQkus+zX6qq24Brgd2m2G+t9zCw/7jtnxnY/pHxOyd5GnBVVd24geOft5z6oqFU1Q/an3IPYtxjL9sVyt2Ab1dVJbk3yR5VddkUXfpnWq2va6rqkrZ8EbDLwLb/C5xaVR8cqN0DfHmg/W+15WcBr2zLnwb+vC1/C9gb2BX4M7pgfx7dF6mN+cequhu4O8mNwPZ034is+Wmyz7PJpr74maqZFmCix/xNVh+z1ns4yUnjtk829eWtSV4H/CqwdB3HqgFeUde6OAP4KA/+E+1r6P6sdU2SH9EFJ/9Uq3WS5IiBqzb3s/bn00MGlu8eWL6PtS84/Avw/HaVcswv6oHn0I5vP2iszbeA59JdLT8T2BbYh+5q/KRjGBx/ksdNcgxpkJ+pmikrgbVutk/yCGAn4N9GcLxjquoJdO/lk8d9JmsdGNS1Lk4Ejq6qS8fVDwKWVtUuVbUL8HT8n4rWUVUdV1VPbVcFr6a7kW7sT6e7DtnNCXTh+u+TTPcXw3/hgffpwcC32/IFwLOB+6vq58AlwB/RBfihxl9V1w85Xs1vfqZqppwDbJPkEIB2M+lfACdV1V2jOmhVfQFYASwb1TE2dQZ1Da2qVlfVxwdr7U+3OwPnD7S7BrgtyTNb6d1JVo+9Wm38fMoPzcApaO74PPCodnX9DXTzxodSVR8DLgY+nWSqz7g3A4cm+QHwB8Bb2v53A9fxwHv6W8DDgfFhSprO+Dnqrxrc6GeqZkr7q+IrgFcnuYruM/XnwLs2sOvBOer/NEmbo4E/nubzWJPwm0klSZKkHvJfN5IkSVIPGdQlSZKkHjKoS5IkST1kUJckSZJ6yKAuSZIk9ZBBXZK0USU5afyjCCVJ686gLkmaVUN8OZUkzUt+OErSPJbkPXTfzHodcBNwEfAPwHHAQuAu4HVV9cMkJwG30X0V+a8Ab6+q05IE+CvgBcA1QAb6fzrwMeBhrf/XVtUNSc6l+3bY5wBn0H1LoiRpgEFdkuapJEuA3wH+K93/Dy6mC+rHA6+vqqvat2F+gi6EA+wA/CbwRLqAfRrdNx4+AXgysD1wOXBiki3oAvwBVbUmyWuADwJ/2PratqqeN/ITlaQ5yqAuSfPXbwKnV9XPAJJ8CXgI8Gzg77sL5QBsNbDPF6vqfuDyJNu32t7AZ6vqPuD6JF9v9ScAewBnt74WADcM9PW5jX9KkrTpMKhL0vyVCWqbAbdW1VMn2efuSfavSfpfWVXPmqSvO6cfoiTNX95MKknz17eBlyV5SJKHAS+hm5N+TZJXA6TzlGn6+SZwYJIFSXYAnt/qVwILkzyr9bVFkieN5EwkaRNkUJekeaqqLqSbZ/594AvACuCndDeXHpbk+8BK4IBpuvoH4CrgUuCTwHmt/3uAVwEfbn1dQjetRpI0hFRN9NdKSdJ8kORhVXVHkm3orowfXlUXz/a4JEnOUZek+e74JLvT3US63JAuSf3hFXVJkiSph5yjLkmSJPWQQV2SJEnqIYO6JEmS1EMGdUmSJKmHDOqSJElSDxnUJUmSpB76/9XrnypgXtZAAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2731550f470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12,6))\n",
    "sns.countplot(data=df, x='gender')\n",
    "plt.ylabel('Number of users')\n",
    "plt.title('Users gender distribution')\n",
    "sns.despine()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Approx. 45% of users' gender were not presented. And there is no significant difference between female and male users on Airbnb's platform."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Travel Destination Country\n",
    "\n",
    "This is what we will predict in the test data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x27315503d30>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12,6))\n",
    "sns.countplot(x='country_destination', data=df)\n",
    "plt.xlabel('Destination Country')\n",
    "plt.ylabel('Number of users')\n",
    "sns.despine()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Nearly 60% of users did not book any destination (NDF). The most booked country is the US (nearly 30% of all users booked US), given all users in the data set are from the US. We can say that US travelers in the dataset are more likely to travel within the US."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### signup_method"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x27318b4e240>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12,6))\n",
    "# df_without_NDF = df[df['country_destination']!='NDF']\n",
    "sns.countplot(x='signup_method', data = df)\n",
    "plt.xlabel('Method')\n",
    "plt.ylabel('Number of users')\n",
    "plt.title('Users sign up method distribution')\n",
    "sns.despine()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Over 70% of all users in the data used basic email method to sign up with Airbnb, and less than 30% of bookers used their facebook account to sign up, approx. only 0.26% of the bookers in the data used their Google accounts to sign up."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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nzJ//vxF26utttoytbesx0uSJLV3JuPNdMUVV7D55puXHcYyqZ+MS5IkqVwm4w2YN28ee+65J/369aN3797cdNNNDB8+nAkTJgBw5ZVXstlmmzF8+HCOPvpojj/+eAAOO+wwTjzxRAYPHswmm2zCmDFjABg3bhx77bXXovaPP/54Ro0aBUCPHj049dRT2Wabbdhmm22YPn16o3EddthhHHfccey4445ssskmPPDAAxxxxBH06tWLww47bFG9u+++m+22246tttqKAw44gLlz53LJJZcwc+ZMdtxxR3bcccdFdc8880z69evHoEGDeO211wB46aWX2Hnnnenbty8777wzL7/8MgAvvPAC2223HVtvvTXf/e53l/1CS5IktXMm4w2466672GCDDXj66aeZMmUKu++++6J9M2fO5Ac/+AGPPfYY99xzD3/9618/duyrr77K+PHjuf322znttNOadb411liDxx9/nOOPP56TTjppsXXffvtt7r//fn7yk5+w9957861vfYupU6fyzDPPMGnSJN544w3OPfdc7r33Xp588kkGDhzIj3/8Y0488UQ22GADxo4dy9ixY4HKHx2DBg3i6aefZujQofz6178GKn8sjBw5ksmTJ3PwwQdz4oknAvDNb36T4447jieeeIJ/+7d/a/b1lCRJUsNMxhvQp08f7r33Xk499VQeeughunbtumjf448/zrBhw1h77bXp3LkzBxxwwMeO3W+//ejQoQObb775opHmpowYMWLR50cffXSxdffee28igj59+rDeeuvRp08fOnTowBZbbMGLL77IY489xrRp0xgyZAj9+/dn9OjRvPTSSw22tdJKKy0asR8wYAAvvvgiAI8++igHHXQQAF//+tcZP348AA8//PCiWL/+9a83q2+SJElqnA/9acBmm23GxIkTufPOOzn99NPZddddF+3LzMUeu/LKK3+ibqdOnfjoo48Wlddfh7t6OcCmlgasa79Dhw4fO1eHDh1YuHAhHTt2ZJddduGGG25YbDsAnTt3XnS+jh07snDhwgbrLUl8bdmAU65Z4mMmXjiyBpFIkiRVODLegJkzZ/KpT32KQw45hJNPPpknn3xy0b5tttmGBx54gLfffpuFCxdyyy23NNnexhtvzLRp03j//feZM2cO991338f233TTTYs+b7fddssU+6BBg3j44YcXzT2fP38+f/vb3wBYffXVeffdd5tsY/Dgwdx4440AXHfddWy//fYADBky5GPlkiRJWjaOjDfgmWee4ZRTTqFDhw507tyZX/7yl5x88skAbLjhhpxxxhlsu+22bLDBBmy++eYfm8bSkI022oivfvWr9O3bl0033ZQtt9zyY/vff/99tt12Wz766KNmjWgvTrdu3Rg1ahQjRozg/fffB+Dcc89ls80245hjjmGPPfZg/fXXXzRvvCGXXHIJRxxxBBdeeCHdunXj6quvBuDiiy/moIMO4uKLL+bLX/7yMsUpSZIkiKamXaxoBg4cmHWrotR59tln6dWrV7PbmDt3LqutthoLFy5k//3354gjjmD//fdfqnh69OjBhAkTWHfddZfq+LZoSa9na3GaiiRJakXNmtvrNJWlcPbZZ9O/f3969+5Nz5492W+//coOSZIkScshp6kshYsuuqjF2qpbwaTaeeedx29/+9uPlR1wwAGceeaZLXZeSZIklc9kvA0688wzTbwlSZLaAaepSJIkSSUxGZckSZJKYjIuSZIklcRkvA158cUX6d279zK1cdttt3H++ee3UESSJEmqJW/gbMTSrEm9OK21XvU+++zDPvvs0yrnkiRJ0rJxZLyNWbhwIYceeih9+/blK1/5CvPnz+ecc85h6623pnfv3hxzzDHUPajpkksuYfPNN6dv374ceOCBAIwaNYrjjz8egNdee43999+ffv360a9fPx555JHS+iVJkqRPMhlvY5577jmOOeYYJk+ezBprrMGll17K8ccfzxNPPMGUKVN47733uP322wE4//zzeeqpp5g8eTKXXXbZJ9o68cQTGTZsGE8//TRPPvkkW2yxRWt3R5IkSYthMt7GbLTRRgwZMgSAQw45hPHjxzN27Fi23XZb+vTpw/3338/UqVMB6Nu3LwcffDC/+c1v6NTpkzOO7r//fo477jgAOnbsSNeuXVuvI5IkSWqSyXgbExGf2P6P//gPxowZwzPPPMPRRx/NggULALjjjjv4xje+wcSJExkwYAALFy4sI2RJkiQtJZPxNubll1/m0UcfBeCGG25g++23B2Dddddl7ty5jBkzBoCPPvqIV155hR133JEf/ehHzJ49m7lz536srZ133plf/vKXAHz44Ye88847rdgTSZIkNcVkvI3p1asXo0ePpm/fvrz11lscd9xxHH300fTp04f99tuPrbfeGqgk14cccgh9+vRhyy235Fvf+hZrrrnmx9q6+OKLGTt2LH369GHAgAGLprdIkiSpbYi6lTnai4EDB+aECRM+Vvbss8/Sq1evkiJa8bTV67k0y1W21pKUkiRphRNNV3FkXJIkSSqNybgkSZJUEpNxSZIkqSQm45IkSVJJTMYlSZKkkpiMS5IkSSUxGW9jLrnkEnr16sXBBx/cIu0NHz6c+ks5Lo2zzz6biy66qAUikiRJUp1OZQfQVr18Tp8Wbe8z33umWfUuvfRS/vSnP9GzZ88WPb8kSZLaHkfG25Bjjz2W559/nn322YcLLriAwYMHs+WWWzJ48GCee+45oPLkzZNPPpk+ffrQt29ffvaznwEwceJEhg0bxoABA9htt9149dVXF7X7m9/8hsGDB9O7d28ef/xxAN566y32228/+vbty6BBg5g8efJiy6v9+te/Zo899uC9996r9SWRJElaoTky3oZcdtll3HXXXYwdO5aVVlqJb3/723Tq1Il7772XM844g1tuuYXLL7+cF154gaeeeopOnTrx1ltv8cEHH3DCCSfwhz/8gW7dunHTTTdx5plnctVVVwEwb948HnnkER588EGOOOIIpkyZwllnncWWW27Jrbfeyv3338/IkSOZNGlSo+V1fv7zn3P33Xdz6623svLKK5d1qSRJklYIJuNt1Jw5czj00EP5+9//TkTwwQcfAHDvvfdy7LHH0qlT5a1be+21mTJlClOmTGGXXXYBKqPn66+//qK2RowYAcDQoUN55513mD17NuPHj+eWW24BYKedduLNN99kzpw5jZYDXHvttXTv3p1bb72Vzp07t86FkCRJWoGZjLdR3/3ud9lxxx35/e9/z4svvsjw4cMByEwi4mN1M5MtttiCRx99tMG26tePCDKzwXqNlQP07t2bSZMmMWPGDOe0S5IktQDnjLdRc+bMYcMNNwRg1KhRi8p33XVXLrvsMhYuXAhU5nh//vOfZ9asWYuS8Q8++ICpU6cuOuamm24CYPz48XTt2pWuXbsydOhQrrvuOgDGjRvHuuuuyxprrNFoOcCWW27Jr371K/bZZx9mzpxZ2wsgSZLUDpiMt1Hf+c53OP300xkyZAgffvjhovKjjjqKz3zmM/Tt25d+/fpx/fXXs9JKKzFmzBhOPfVU+vXrR//+/XnkkUcWHbPWWmsx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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x27318b4e5f8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12,6))\n",
    "df_without_NDF = df[df['country_destination']!='NDF']\n",
    "sns.countplot(x='country_destination', data = df_without_NDF, hue = 'signup_method')\n",
    "plt.xlabel('Destination Country')\n",
    "plt.ylabel('Number of users')\n",
    "plt.title('Users sign up method vs. destinations')\n",
    "sns.despine()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For users who made booking at least once, most of them signed up with Airbnb through basic email method, no matter which country they were travelling to."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### signup_app"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x27323f31630>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12,6))\n",
    "sns.countplot(x='signup_app', data=df)\n",
    "plt.xlabel('Signup app')\n",
    "plt.ylabel('Number of users')\n",
    "plt.title('Signup app distribution')\n",
    "sns.despine()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Over 85% of all bookers in the data set signed up on Airbnb's website, over 10% of all bookers signed up with iOs."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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8xxzzDFst912bLTRRlxxxRUAjBkzhj322KO5/qOPPpoLLrgAgA033JATTjiBwYMHM3jwYJ544olW47rmmmsYMmQIAwYM4JOf/CTPPfccAKNGjeLggw9mp512om/fvvzmN79p3u8OO+zAPvvsw2abbcaXv/xl5s2bt8TbqyUm3ZIkSWrTDTfcwLrrrsuDDz7IQw89xC677NK8bubMmZx22mncfffd3HTTTTz66KMLbPvss88ybtw4rr32Wk488cS69rfaaqsxfvx4jj76aI499thWyw0fPpy7776b+++/n/33358f//jHzesmTZrEddddx1133cWpp57KzJkzARg/fjxnn302kydP5sknn+TKK6/sSFMsMpNuSZIktalfv37cfPPNnHDCCdx+++2svvrqzevGjx/PjjvuSM+ePVl++eXZb7/9Fth27733ZrnllmOzzTZr7oluzwEHHND8+6677mq13IwZM9h5553p168fZ555JlOmTGlet9dee7HSSiux9tpr8/GPf5zx48cDMHjwYDbaaCO6devGAQccwLhx4+puh8XxvhvTvc3xF3V4m4lnHlJBJJIkScuGjTfemIkTJ3L99ddz0kknMXLkyOZ1mdnmtiussMJ7ynbv3n2BYR0L3/+69vZ8bd2q76tf/Srf+MY32HPPPRkzZgyjRo1qdbum+daWV82ebkmSJLVp5syZrLzyyhx00EEcd9xx3Hfffc3rBg8ezG233cbLL7/MnDlz+NOf/tRufRtssAEPP/ww77zzDq+++iq33HLLAusvv/zy5t9Dhw5ttZ5XX32VXr16AXDhhRcusO6qq65i9uzZzJo1izFjxjBo0CCg6JmfOnUq8+bN4/LLL2f48OH1NcJiet/1dEuSJKljJk+ezPHHH89yyy3H8ssvz69+9SuOO+44AHr16sW3v/1thgwZwrrrrstmm222wPCTlqy33np85jOfoX///vTt25cBAwYssP6dd95hyJAhzJs3j9GjR7daz6hRo9hvv/3o1asX2267LVOnTm1eN3jwYHbffXemT5/Of//3f7Puuuvy2GOPMXToUE488UQmT57cfFFlZ4j2vhJYFg0cODCbrqZdmMNLJEmS5nvkkUfYdNNNF6uON954gx49ejBnzhz22WcfvvCFLyxyMrvhhhsyYcIE1l577UWOZ9SoUfTo0aP5g0GTMWPGcNZZZ3HttdcuUr2ttFVd41McXiJJkqTFMmrUKLbaaiu22GIL+vTpw957793okJY6Di+RJEnSYjnrrLOWWF3Tpk17z7LTTz+dP/7xjwss22+//fjOd77TYh21F1TWGjFiBCNGjFjMCBeNSbckSZKWat/5zndaTbCXFQ4vkSRJkipm0i1JkiRVzKRbkiRJqphJtyRJkhrm61//Ouecc07z/M4778zhhx/ePP/Nb36Tn/zkJy1uO23aNLbYYovKY1wSvJBSkiRJzRblmSZtae95J9tttx1//OMfOfbYY5k3bx4vvvgir732WvP6O++8c4GkfFllT7ckSZIaZtiwYdx5550ATJkyhS222IJVV12Vl19+mXfeeYdHHnmEAQMGcOaZZzJo0CD69+/PKaec0rz9nDlzOPTQQ+nfvz/77rsvb731VqMOpU0m3ZIkSWqYddddl+7duzN9+nTuvPNOhg4dypAhQ7jrrruYMGEC/fv3Z8yYMTz++OOMHz+eBx54gIkTJzJ27FgA/vGPf3DkkUcyadIkVlttNc4999wGH1HLTLolSZLUUE293U1J99ChQ5vnt9tuO2688UZuvPFGBgwYwNZbb82jjz7K448/DsB6663HsGHDADjooIMYN25cIw+lVY7pliRJUkNtt9123HnnnUyePJktttiC9dZbj7PPPpvVVluNL3zhC4wZM4aTTjqJL33pSwtsN23aNCJigWULzy8t7OmWJElSQw0bNoxrr72Wnj170q1bN3r27Mkrr7zCXXfdxdChQ9l555353e9+xxtvvAHAP//5T55//nkApk+fzl133QXA6NGjGT58eMOOoy0m3ZIkSWqofv368eKLL7LtttsusGz11Vdn7bXXZuTIkXzuc59j6NCh9OvXj3333ZfXX38dgE033ZQLL7yQ/v3789JLL/GVr3ylUYfRpsjMRsewxA0cODAnTJjQ4rpFuQ1Oe7e6kSRJWlY98sgjbLrppo0OY5nQSlvVNZ7Fnm5JkiSpYibdkiRJUsVMuiVJkqSKmXRLkiRJFTPpliRJkipm0i1JkiRVzKRbkiRJDbXddts1T0+ZMoWddtqJjTfemL59+3LaaafRdIvr5557jj322IMtt9ySzTbbjN12261RIXeYj4GXJElSs+mn9lui9a1/8uR2y9x5550AvP322+y555786le/YuTIkbz11lt8+tOf5txzz+Woo47i5JNP5lOf+hRf+9rXAJg0adISjbVK9nRLkiSpoXr06AHApZdeyrBhwxg5ciQAK6+8Mr/4xS8444wzAHj22Wfp3bt383b9+/fv/GAXkUm3JEmSlgpTpkxhm222WWDZRz7yEd544w1ee+01jjrqKL74xS/y8Y9/nNNPP52ZM2c2KNKOM+mWJEnSUiEziWj5qeoRwc4778xTTz3FEUccwaOPPsqAAQN44YUXOjnKRWPSLUmSpKXC5ptvzoQJExZY9tRTT9GjRw9WXXVVAHr27MnnPvc5Lr74YgYNGsTYsWMbEWqHmXRLkiRpqXDggQcybtw4br75ZqC4sPKYY47hW9/6FgC33norb731FgCvv/46Tz75JOuvv37D4u0Ik25JkiQtFVZaaSWuuuoqvv/97/Oxj32Mfv36MWjQII4++mgAJk6cyMCBA+nfvz9Dhw7l8MMPZ9CgQQ2Ouj6V3jIwIr4OHA4kMBk4DPgwcBnQE7gPODgz/x0RKwAXAdsAs4DPZua0sp6TgC8Cc4FjMvNvVcYtSZL0flXPLf6WtDfeeKN5ul+/fowZM6bFcscffzzHH398J0W1ZFXW0x0RvYBjgIGZuQXQDdgf+BHw08zsC7xMkUxT/n45Mz8K/LQsR0RsVm63ObALcG5EdKsqbkmSJGlJq3p4SXdgpYjoDqwMPAvsBFxRrr8Q2Luc3qucp1z/iSguX90LuCwz38nMqcATwOCK45YkSZKWmMqS7sz8J3AWMJ0i2X4VmAi8kplzymIzgF7ldC/gmXLbOWX5tWqXt7CNJEmStNSrcnjJmhS91H2AdYFVgF1bKJpNm7SyrrXlC+/vyIiYEBETlpX7NUqSJOn9ocrhJZ8EpmbmC5n5LnAlsB2wRjncBKA30PQooRnAegDl+tWBl2qXt7BNs8w8LzMHZubAddZZp4rjkSRJkhZJlUn3dGDbiFi5HJv9CeBh4O/AvmWZQ4Gryumry3nK9bdmZpbL94+IFSKiD9AXGF9h3JIkSdISVeWY7nsoLoi8j+J2gcsB5wEnAN+IiCcoxmyfX25yPrBWufwbwIllPVOAP1Ak7DcAR2Xm3KriliRJUuf785//TETw6KOPdmi7MWPGsMcee3RomwkTJnDMMce0uG7DDTfkxRdf7FB99aj0Pt2ZeQpwykKLn6KFu49k5mxgv1bqOR04fYkHKEmSpAUM+/mwJVrfHV+9o65yo0ePZvjw4Vx22WWMGjVqsfc7Z84cundvOdUdOHAgAwcOXOx9dIRPpJQkSVJDvfHGG9xxxx2cf/75XHbZZUDRgz1ixAj23XdfNtlkEw488ECKkcdwww03sMkmmzB8+HCuvPLK5npGjRrFkUceyciRIznkkEOYPXs2hx12GP369WPAgAH8/e9/b667qXd81qxZjBw5kgEDBvClL32peR9Lmkm3JEmSGuovf/kLu+yyCxtvvDE9e/bkvvvuA+D+++/nnHPO4eGHH+app57ijjvuYPbs2RxxxBFcc8013H777fzrX/9aoK6JEydy1VVXcemll/LLX/4SgMmTJzN69GgOPfRQZs+evUD5733vewwfPpz777+fPffck+nTp1dyjCbdkiRJaqjRo0ez//77A7D//vszevRoAAYPHkzv3r1Zbrnl2GqrrZg2bRqPPvooffr0oW/fvkQEBx100AJ17bnnnqy00koAjBs3joMPPhiATTbZhA022IDHHntsgfJjx45trmP33XdnzTXXrOQYKx3TLUmSJLVl1qxZ3HrrrTz00ENEBHPnziUi2G233VhhhRWay3Xr1o05c4rnKxY3xmvZKqus0jxd71CRtupbUuzpliRJUsNcccUVHHLIITz99NNMmzaNZ555hj59+jBu3LgWy2+yySZMnTqVJ598EqC5V7wlO+ywA5dccgkAjz32GNOnT+djH/tYq2X++te/8vLLLy+Jw3oPk25JkiQ1zOjRo9lnn30WWPbpT3+aSy+9tMXyK664Iueddx677747w4cPZ4MNNmi17v/6r/9i7ty59OvXj89+9rNccMEFC/SeA5xyyimMHTuWrbfemhtvvJH1119/8Q+qBVHVFZqNNHDgwJwwYUKL67Y5/qIO1zfxzEMWNyRJkqSl0iOPPMKmm27a6DCWCa20VV1jU+zpliRJkipm0i1JkiRVzKRbkiRJqphJtyRJklQxk25JkiSpYibdkiRJUsVMuiVJktRQEdH8uHaAOXPmsM4667DHHntUsr8xY8ZUVndrfAy8JEmSmt22w45LtL4dx97WbplVVlmFhx56iLfffpuVVlqJm266iV69ei3ROBrNnm5JkiQ13K677sp1110HFE+pPOCAA5rXvfTSS+y9997079+fbbfdlkmTJgHQr18/XnnlFTKTtdZai4suKh6CePDB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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x27323fc8780>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_without_NDF_US = df_without_NDF[df_without_NDF['country_destination']!='US']\n",
    "plt.figure(figsize=(12,6))\n",
    "sns.countplot(x='country_destination', data=df_without_NDF_US, hue='signup_app')\n",
    "plt.xlabel('Destination Country')\n",
    "plt.ylabel('Number of users')\n",
    "plt.title('Destinatiuon country based on signup app without the US')\n",
    "sns.despine()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Signing up through Airbnb website is the most common sign up on users no matter which destination country they travel to in the data."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### first_device_type"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2731552d080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(18,6))\n",
    "sns.countplot(x='first_device_type', data=df_without_NDF)\n",
    "plt.xlabel('First device type')\n",
    "plt.ylabel('Number of users')\n",
    "plt.title('First device type distribution')\n",
    "sns.despine()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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gQQEBPDYY495xlSuXJmHHnqI0NBQYmJi+Pnnny/ijomIiIiIiMjVRoWMUuSuu+4iPj6ejIwMNm3aRMuWLT3HGjduTFJSEhs3buS5557jiSeeAOCNN97g+++/Z+PGjWzatIkBAwYU6VyhoaGkpaVx4MABJkyYwOeff86GDRsICwvjpZde4tChQyxcuJAtW7awadMmnnzyyTzjH330Ufbv38/MmTMZM2YMN954IwkJCSQkJPDTTz/x2GOP8eWXX5KSksK6detYtGgRACdPniQ0NJQNGzbQtm1bnn322WK6eyIiIiIiInI10NKSUiQoKIj09HTmzZtH165d8xw7evQogwYNYvv27RhjyMzMBODzzz9n1KhR+Pm5P8rq1asX6VzWWgD+85//kJqaSuvWrQH45ZdfaNWqFVWrVsXf359hw4bRrVu3PHt1/PnPf6Zly5a88cYbXmOvW7eOdu3aUbNmTQAGDBhAUlISd955Jz4+PvTr1w+Ae+65h169ehX19oiIiIiIiIhoRkZp06NHDx5++OE8y0rAvYwjZ1+LDz/8kIyMDMBdkDDG21NuC7dx40aaNGmCtZaOHTuSkpJCSkoKqampzJgxAz8/P9auXUvv3r1ZtGgRnTt39owNDw9n/fr1HDp0yGvsnCJJUfya3EVEREREROTqpUJGKTN06FCefvppAgMD87QfPXrUs/nnrFmzPO2xsbG89tprZGVlARRYXMhhrWXatGns3buXzp07ExERwapVq9ixYwcAp06dYtu2bZw4cYKjR4/StWtXpk6dSkpKiidG586dGTt2LN26deP48eMAVKlSxfO6ZcuWLF++nAMHDpCdnc28efNo29a9gerZs2c9Tz2ZO3cuUVFRv/ZWiYiIiIiIyFVIS0tKmdq1a3P//ffna3/00UcZNGgQL730Eh06dPC0Dxs2jG3bthEUFES5cuUYPnw4o0ePzjf+kUce4c9//jOnTp0iIiKChIQEypcvT82aNZk1axZ33303Z86cAWDChAlUqVKFnj17kpGRgbWWKVOm5InXt29fjh8/To8ePViyZAkjRoygS5cu3HDDDSQkJPCXv/yF9u3bY62la9eu9OzZE3A/nWXLli00b96catWqMX/+/OK8fSIiIiIiInKFMxeyDOBKEBYWZpOTk/O0bd26lSZNmlymjK4ulStX9jwVpazQ70fRne/RxUV5FLGIiIiIiFy1irT3gJaWiIiIiIiIiEiZoUKGXFJlbTaGiIiIiIiIlC4qZIiIiIiIiIhImaFChoiIiIiIiIiUGSpkiIiIiIiIiEiZoUKGiIiIiIiIiJQZKmSUEnv27KFnz540aNCAW2+9lfvvv59ffvmFlJQUlixZ4uk3fvx4Jk+efNHnmzdvHhMnTvQar27duhw4cKDQ8e3atePcx9iKiIiIiIiIlDS/y51AafTKQx8Wa7zRf7uj0OPWWnr16sV9993H4sWLyc7OZsSIEYwbN45mzZqRnJxM165diyWX7OxsfH19+fTTTxkzZgwffli81yoiIiIiIiJSkjQjoxT48ssv8ff3Z8iQIQD4+voyZcoU/vnPf/Loo48yf/58XC4X8+fPByA1NZV27dpRv359pk2b5onzzjvv0KJFC1wuFyNHjiQ7OxuAypUr8/TTT9OyZUvWrFmDtZaUlBRCQ0MLzSs9PZ0mTZowfPhwmjVrRmxsLKdPn87T5+zZswwaNIgnn3zSc65x48YRHBxMREQE+/btA2DXrl3ExMQQFBRETEwMu3fvJjs7m/r162Ot5ciRI/j4+JCUlARAmzZt2LFjB+PHj2fo0KFer1dERERERESuPipklAJbtmyhefPmedqqVq1K3bp1efLJJ+nXrx8pKSn069cPgLS0ND777DPWrl3Ls88+S2ZmJlu3bmX+/PmsWrWKlJQUfH19mTNnDgAnT54kICCAr776iqioKDZu3EhwcDDGmPPmtn37dv7whz+wZcsWrr32Wt577z3PsaysLAYMGEDDhg2ZMGGC51wRERF8/fXXREdH8+abbwIwevRoBg4cyKZNmxgwYABjxozB19eXhg0bkpqaysqVK2nevDkrVqzgzJkz7Nmzh9tuu63A6xUREREREZGrkwoZpYC11mtRoaD2bt26UaFCBWrUqEGtWrXYt28fX3zxBevXryc8PByXy8UXX3zBzp07AfcMj969e3vGf/rpp3Tp0gWgwGJGTnu9evVwuVwANG/enPT0dE+fkSNHEhAQwLhx4zxt5cuXp3v37vn6r1mzhv79+wMQFxfHypUrAffMi6SkJJKSknj88cdZuXIl69atIzw8vNDrFRERERERkauTChmlQM4+GLkdO3aMH374AV9f33z9K1So4Hnt6+tLVlYW1loGDRpESkoKKSkpfPvtt4wfPx4Af3//PHGWLl1KbGwsANdffz2HDx/OE//48eNce+21BZ4rR2RkJAkJCWRkZHjaypUr5ymCnNs/t5w+bdq0YcWKFaxdu5auXbty5MgREhMTiY6OLvR6RURERERE5OqkQkYpEBMTw6lTp5g9ezbg3pDzoYceYvDgwfzmN7/h+PHjRYqxYMEC9u/fD8ChQ4fYtWtXvn5Hjx4lKyuL66+/HoDo6Gg++OADzznef/99goODvRZQznXvvffStWtX+vbte97iQmRkJPHx8QDMmTOHqKgoAFq2bMnq1avx8fHB398fl8vF66+/Tps2bc57fhEREREREbn6qJBRChhjWLhwIe+++y4NGjSgYcOG+Pv78/zzz9O+fXtSU1PzbPbpTdOmTZkwYQKxsbEEBQXRsWNH9u7dm6/fsmXLuP322z3vg4KCGD16NFFRUbhcLl577TX++c9/Fjn3Bx98kNDQUOLi4jh79myB/aZNm8bMmTMJCgri7bff5u9//zvgnm1x8803ExERAbhnaBw/fpzAwMAi5yAiIiIiIiJXD2Otvdw5XFJhYWH23GUcW7dupUmTJpcpo0tr2LBhDBs2zFM4kPO7mn4/Ltby6LaFHm+btPwSZSIiIiIiImXQ+Z9IAfiVdBZSulzIbAsRERERERGR0kZLS0RERERERESkzFAhQ0RERERERETKDBUyRERERERERKTMUCFDRERERERERMoMFTJEREREREREpMxQIaMUWbhwIcYY0tLSLnhsYmIi3bt3v6AxycnJjBkzxuuxunXrcuDAAa/tgYGBBAcHExsby3//+18AKleufME5i4iIiIiIiFwoPX7Vi4n39CnWeOPeWVCkfvPmzSMqKor4+HjGjx9fLOfOysrCz8/7xxwWFkZYWNgFx0xISKBGjRo88cQTPP/880ybNu1i0xQREREREREpEs3IKCVOnDjBqlWrmDFjBvHx8Z72xMRE2rVrR58+fWjcuDEDBgzAWgvAp59+SuPGjYmKiuL999/3jBk/fjwjRowgNjaWgQMHkpGRwZAhQwgMDCQkJISEhARP7JxZHAcPHiQ2NpaQkBBGjhzpOUdhoqOj2bFjh+f9uHHjCA4OJiIign379gGwa9cuYmJiCAoKIiYmht27dwMwePBgxowZQ2RkJPXr12fBgv8Ve1588UXCw8MJCgrimWee+bW3VERERERERK5AKmSUEosWLaJz5840bNiQ6tWrs2HDBs+xjRs3MnXqVFJTU9m5cyerVq0iIyOD4cOH8+GHH7JixQrPEo8c69evZ/HixcydO5fp06cDsHnzZubNm8egQYPIyMjI0//ZZ58lKiqKjRs30qNHD0/BoTAfffQRgYGBAJw8eZKIiAi+/vproqOjefPNNwEYPXo0AwcOZNOmTQwYMCDPUpa9e/eycuVKPvroI8aOHQvA0qVL2b59O2vXriUlJYX169eTlJT0K+6oiIiIiIiIXIlUyCgl5s2bx1133QXAXXfdxbx58zzHWrRoQe3atfHx8cHlcpGenk5aWhr16tWjQYMGGGO455578sTr0aMHFStWBGDlypXExcUB0LhxY2655Ra2bduWp39SUpInRrdu3bjuuusKzLV9+/a4XC6OHTvG448/DkD58uU9szuaN29Oeno6AGvWrKF///4AxMXFsXLlSk+cO++8Ex8fH5o2beqZwbF06VKWLl1KSEgIoaGhpKWlsX379gu4kyIiIiIiInIl0x4ZpcDBgwf58ssv+eabbzDGkJ2djTGGF154AYAKFSp4+vr6+pKVlQWAMabAmJUqVfK8LsoykfPFyy1nj4zcypUr5xmfO8fCzpH7unJytNby+OOPM3LkyCLlIiIiIiIiIlcXFTJKgQULFjBw4EBef/11T1vbtm3zzF44V+PGjfn+++/57rvvuPXWW/PM4DhXdHQ0c+bMoUOHDmzbto3du3fTqFEj1qxZk6/Pk08+ySeffMLhw4eL5doiIyOJj48nLi6OOXPmEBUVVWj/Tp068dRTTzFgwAAqV67Mjz/+SLly5ahVq1ax5HM1a/7I7PP2Wf/iwEuQiYiIiIiIyK+npSWlwLx58/jtb3+bp613797MnTu3wDH+/v688cYbdOvWjaioKG655ZYC+/7+978nOzubwMBA+vXrx6xZs/LMhgB45plnSEpKIjQ0lKVLl1KnTp2LuyjHtGnTmDlzJkFBQbz99tv8/e9/L7R/bGws/fv3p1WrVgQGBtKnTx+OHz9eLLmIiIiIiIhI2WeKuuzgShEWFmaTk5PztG3dupUmTZpcpoyktLtSfj8uxYyM5dFtCz3eNmn5RcUXEREREZErWpH2O9CMDBEREREREREpM1TIEBEREREREZEyQ4UMERERERERESkzSqyQYYy52RiTYIzZaozZYoy532mvboxZZozZ7vx7ndNujDHTjDE7jDGbjDGhuWINcvpvN8YMytXe3Biz2RkzzRT1+aEiIiIiIiIiUiaV5IyMLOAha20TIAL4gzGmKTAW+MJa2wD4wnkP0AVo4PyMAF4Fd+EDeAZoCbQAnskpfjh9RuQa17kEr0dERERERERELrMSK2RYa/daazc4r48DW4GbgJ7Av5xu/wLudF73BGZbt/8A1xpjbgA6AcustYestYeBZUBn51hVa+0a6370yuxcsURERERERETkCnRJ9sgwxtQFQoCvgN9Ya/eCu9gB1HK63QT8kGvYHqetsPY9XtrLJF9fX1wuF82aNSM4OJiXXnqJs2fP/qpYlStXzteWnp7O3LlzLzZND2stHTp04NixYwDs2bOHnj170qBBA2699Vbuv/9+fvnlFwBSUlJYsmSJZ+z48eOZPHnyRZ3/rrvuYvv27RcVQ0RERERERMoev5I+gTGmMvAe8Cdr7bFCtrHwdsD+inZvOYzAvQSFOnXqnC9ltk788rx9LkSTcR3O26dixYqkpKQAsH//fvr378/Ro0d59tlniyWHnEJG//79iyXekiVLCA4OpmrVqlhr6dWrF/fddx+LFy8mOzubESNGMG7cOF588UVSUlJITk6ma9euxXLu7Oxs7rvvPl544QXefPPNYokpIiIiIiIiZUOJzsgwxpTDXcSYY61932ne5ywLwfl3v9O+B7g51/DawE/naa/tpT0fa+0b1towa21YzZo1L+6iLoFatWrxxhtv8Morr2CtJTs7m0ceeYTw8HCCgoJ4/fXXAdi7dy/R0dG4XC4CAgJYsWJFnjgHDhygVatWfPzxx4wdO5YVK1bgcrmYMmUKGRkZDBkyhMDAQEJCQkhISABg1qxZ9OzZk86dO9OoUaMCCylz5syhZ8+eAHz55Zf4+/szZMgQwD27ZMqUKbz11lscO3aMp59+mvnz5+NyuZg/fz4AqamptGvXjvr16zNt2jRP3HfeeYcWLVrgcrkYOXIk2dnZgHuWydNPP03Lli1Zs2YNbdq04fPPPycrK6sY77yIiIiIiIiUdiX51BIDzAC2WmtfynXoAyDnySODgMW52gc6Ty+JAI46S08+A2KNMdc5m3zGAp85x44bYyKccw3MFavMq1+/PmfPnmX//v3MmDGDatWqsW7dOtatW8ebb77J999/z9y5c+nUqRMpKSl8/fXXuFwuz/h9+/bRrVs3nnvuObp168akSZNo06YNKSkpPPDAA0yfPh2AzZs3M2/ePAYNGkRGRgYAa9euZc6cOaSkpPDuu++SnJycL79Vq1bRvHlzALZs2eJ5naNq1arUqVOH9PR0nnvuOfr160dKSgr9+vUDIC0tjc8++4y1a9fy7LPPkpmZydatW5k/fz6rVq0iJSUFX19f5syZA8DJkycJCAjgq6++IioqCh8fH2677Ta+/vrr4r/5IiIiIiIiUmqV5NKS1kAcsNkYk+K0PQFMAv5tjLkX2A30dY4tAboCO4BTwBAAa+0hY8yfgXVOv+estYec1/cBs4CKwCfOzxXDvYcpLF26lE2bNrFgwQIAjh49yvbt2wkPD2fo0KFkZmZy5513egoZmZmZxMTEMH36dNq2bes19sqVK/njH/8IQOPGjbnlllvYtm0bAB07duT6668HoFevXqxcuZKwsLA84w8dOkSVKlU8eXpbMlRQO0C3bt2oUKECFSpUoFatWuzbt48vvviC9evXEx4eDsDp06epVcu9hYqvry+9e/fOE6NWrVr89NNP+YooIiIiIiIicuUqsUKGtXYl3vexAIjx0t8Cfygg1lvAW17ak4GAi0iz1Nq5cye+vr7UqlULay0vv/wynTp1ytcvKSmJjz/+mLi4OB555BEGDhyIn58fzZs357PPPiuwkJFTJPHm3OKDt2KEn58fZ8+excfHh2bNmvHee+/lOX7s2DF++OEHbr31VtavX59vfIUKFTyvfX19ycrKwlrLoEGD+Mtf/pKvv7+/P76+vnnaMjIyqFixYoHXISIiIiIiIleeS/LUErkwP//8M6NGjWL06NEYY+jUqROvvvoqmZmZAGzbto2TJ0+ya9cuatWqxfDhw7n33nvZsGED4C48vPXWW6SlpTFp0iQAqlSpwvHjxz3niI6O9izb2LZtG7t376ZRo0YALFu2jEOHDnH69GkWLVpE69at8+XYqFEjdu7cCUBMTAynTp1i9uzZgHszzoceeojBgwdzzTXX5Dt3QWJiYliwYAH797u3TTl06BC7du0qsP+2bdto1qzZeeOKiIiIiIjIlUOFjFLi9OnTnsev3n777cTGxvLMM88AMGzYMJo2bUpoaCgBAQGMHDmSrKwsEhMTcblchISE8N5773H//fd74vn6+hIfH09CQgL/+Mc/CAoKws/Pj+DgYKZMmcLvf/97srOzCQwMpF+/fsyaNcszSyIqKoq4uDhcLhe9e/fOt6wE3EtDEhMTAXfhZOHChbz77rs0aNCAhg0b4u/vz/PPPw9A+/btSU1NzbPZpzdNmzZlwoQJxMbGEhQURMeOHdm7d6/Xvvv27aNixYrccMMNv+p+i4iIiIiISNlkCltiAGCMuRXYY609Y4xpBwQBs621Ry5BfsUuLCzMnrt55datW2nSpMllyqh0mTVrFsnJybzyyiuF9tu7dy8DBw5k2bJllyizvKZMmULVqlW59957S/xcV8rvR/NHZp+3z/oXB17UOZZHe1/KlKNt0vKLii8iIiIiIle0granyKMoMzLeA7KNMbfhfgpJPWDuRSQmV4AbbriB4cOHc+zYscty/muvvZZBgwadv6OIiIiIiIhcUYqy2edZa22WMea3wFRr7cvGmI0lnZhcHoMHD2bw4MFF6vu73/2uZJMpxJAhQy7buUVEREREROTyKcqMjExjzN3AIOAjp61cyaUkIiIiIiIiIuJdUQoZQ4BWwERr7ffGmHrAOyWbloiIiIiIiIhIfoUuLTHG+AJPWGvvyWmz1n4PTCrpxEREREREREREzlXojAxrbTZQ0xhT/hLlIyIiIiIiIiJSoKIsLUkHVhljnjLGPJjzU8J5XZUWLlyIMYa0tLQLHpuYmEj37t0vaExycjJjxozxeqxu3bocOHAgT1vLli1xuVzUqVOHmjVr4nK5cLlcpKenF3iO2rVrc+RI/if1Pvnkk0ydOrXQ/N5///1fdS9ERERERETkylWUp5b85Pz4AFVKNp3SYfz48Zcl3rx584iKiiI+Pr7YcsjKysLPz/vHHBYWRlhYWJFjffXVVwDMmjWL5ORkXnnllWLJsSDvv/8+Pj4+NG7cuETPIyIiIiIiImXHeWdkWGuftdY+C0zOee28l2J04sQJVq1axYwZM4iPj/e0JyYm0q5dO/r06UPjxo0ZMGAA1loAPv30Uxo3bkxUVBTvv/++Z8z48eMZMWIEsbGxDBw4kIyMDIYMGUJgYCAhISEkJCR4YufM4jh48CCxsbGEhIQwcuRIzzmKasSIEYSFhdGsWTOee+65PMcmTZpEixYtaNmyJTt37sw3dvv27XTq1InmzZsTHR3Ntm3bWLFiBUuWLOGBBx4476wPERERERERuXqct5BhjGlljEkFtjrvg40x/yjxzK4yixYtonPnzjRs2JDq1auzYcMGz7GNGzcydepUUlNT2blzJ6tWrSIjI4Phw4fz4YcfsmLFCv773//mibd+/XoWL17M3P9v797j5RzPhY//riwhKanEqa86JKlNpUTTSIMSojSxiziUjSKoChV096BV21u026G1VVtaqrsIO6Jt+iq1qbNEikYiBwklSpBGK+JQIQ6J6/1jnrVMknUYyVozmZXf9/OZz8xzP/fzPNfcazKZueY+XH89P/vZzwB49NFHGTduHMcccwxvvfXWMvXPPfdcdtttN6ZNm8aIESN47rnnPlD8F154IVOmTGHGjBnceeedPPbYY037evXqxeTJkznxxBP5+tdXHJU0atQofv7znzN16lQuuOACTjnlFIYMGcLnP/95LrnkEqZPn06fPn0+UDySJEmSpM6pkjkyfgwMBxYCZOYMYPeODGpNNG7cOA4//HAADj/8cMaNG9e0b/DgwWy++eZ06dKlqXfCX/7yF/r27cvWW29NRHDUUUctc74RI0bQvXt3ACZNmsTRRx8NwLbbbkvv3r158sknl6k/ceLEpnPsu+++9OrV6wPHP3DgQAYOHMjjjz++TCLjiCOOAODII4/kgQceWOa4V199lYceeogvfOELDBgwgNGjRzN//vwPdG1JkiRJ0pqjkjkyyMznI6K8aGnHhLNmWrhwIffccw+zZs0iIli6dCkRwQ9/+EMA1llnnaa6DQ0NLFmyBIDl/ibLWHfddZseVzpMpLXztWbOnDn85Cc/YfLkyfTs2ZOjjjpqmR4frZ03M9loo42YPn36Sl1bkiRJkrRmqaRHxvMR8RkgI2LtiPgmxTATtY/x48czcuRInn32WebOncvzzz9P3759mTRpUovHbLvttjzzzDP89a9/BVimB8fydt99d8aOHQvAk08+yXPPPcfHP/7xFuvcdtttvPLKKxXH/89//pMePXrw4Q9/mBdeeIHbb799mf2//vWvm2Lcddddl9nXq1cvNt10U2688UYA3nvvPWbMmAFAjx49eP311yuOQ5IkSZLU+VWSyDgJGA1sBswDBhTbaifjxo3joIMOWqbsC1/4Atdff32Lx3Tr1o0rr7ySfffdl912243evXu3WPfkk09m6dKl9O/fn8MOO4xrrrlmmV4eAGeffTYTJ05k4MCB3HHHHWy55ZYVxz9w4EA+8YlPsP3223PCCSeskKx48803GTx4MJdffjkXX3zxCsffcMMNXHHFFXzyk59ku+2245ZbbgFKQ1LOP/98J/uUJEmSJDWJD7o6Rb0bNGhQTpkyZZmyxx9/nH79+tUoIq3uOsvrY8fTr22zztSLRq7SNSbsvker+/eYOGGVzi9JkiSpU6tovoNKVi35YUR8OCK6RsTdEfFSRBzV1nGSJEmSJEntrZKhJcMy85/AfpSGlmwDnN6hUUmSJEmSJDWjkkRG1+L+88C4zHy5A+ORJEmSJElqUSXLr/4hIv4CLAZOjoiNgbfaOEaSJEmSJKndtdkjIzPPAHYBBmXmu8AbwAEdHZgkSZIkSdLy2uyREREjyx6X72p7CQRJkiRJkqR2VMnQkk+XPe4G7AU8gokMSZIkSZJUZW0mMjLz1PLtiFgfuK7DIloN/Oa3g9v1fP926OQ265x33nlcf/31NDQ00Bk4vwQAACAASURBVKVLF37xi1+w0047tWscAOeffz5nnnlm03ZDQwP9+/dnyZIl9OvXjzFjxvDiiy+y3377MWvWrHa/fksWL17MPvvswz333ENDQwOzZ8/m1FNPZd68eWQmI0eO5KyzziIiuO+++1h77bX5zGc+A8Cxxx7LfvvtxyGHHLLS199777357W9/S69evdrrKUmSJEmSOkAlq5Ys701g6/YOZE324IMPcsstt/DII48wc+ZM7rrrLrbYYot2vUZm8t5773H++ecvU969e3emT5/OrFmzWHvttbniiiva9bqVuuqqqzj44INpaGhg8eLFjBgxgjPOOIMnn3ySGTNm8MADD/Dzn/8cgPvuu48HHnigXa7b2C5HH3100/klSZIkSauvNhMZEfGHiLi5uN0CPAHc1PGhrTleeOEFNtpoI9ZZZx0ANtpoIz760Y8C0KdPH84880x22WUXBg0axCOPPMLw4cPZaqutmpIOixYtYq+99mLgwIH079+fm24q/Xnmzp1Lv379OPnkkxk4cCDHH388ixcvZsCAARx55JErxDFkyBCeeuopAJYuXcoJJ5zAdtttx7Bhw1i8eDEA06dPZ+edd2aHHXbgoIMO4pVXXgFg6NChfPvb32bw4MFss8023H///U3nOf300/n0pz/NDjvswC9+8Ytm22Ds2LEccEBpDtnrr7+eXXfdlWHDhgHwoQ99iMsuu4wLL7yQuXPncsUVV3DJJZcwYMCAputMnDiRz3zmM3zsYx9j/PjxTee96KKLmq599tlnN9suzz//PCNGjGDcuHEr9feTJEmSJFVPJT0y/gu4uLhdAOxerGSidjJs2DCef/55ttlmG04++WQmTJiwzP4tttiCBx98kCFDhnDssccyfvx4HnroIb773e8C0K1bN2688UYeeeQR7r33Xr7xjW+QmQA88cQTjBw5kmnTpnH11Vc39cAYO3bsMtdYsmQJt912G/379wdgzpw5jB49mtmzZ9OzZ09+97vfATBy5Eh+8IMfMHPmTPr378+55567zDkmT57Mj3/846byX/3qV6y//vo8/PDDPPzww/zyl7/kmWeeWeba77zzDk8//TR9+vQBYPbs2ey4447L1Nlqq61YtGgRG2ywASeddBJf+9rXmD59OkOGDAFKyaBJkyZxyy23cMYZpZfnHXfcwZw5c5g8eTLTp09n6tSpTJw4cYV26d27N7169eLtt99m4cKFK/EXlCRJkiRVSyVzZExoq45WzXrrrcfUqVO5//77uffeeznssMO48MILOfbYYwEYMWIEAP3792fRokX06NGDHj160K1bN1599VXWXXddzjzzTCZOnEiXLl3429/+xj/+8Q8Aevfuzc4779zitRt7aECpR8bxxx/P/Pnz6du3b1P5jjvuyNy5c3nttdd49dVX2WOPPQA45phjOPTQQ5vOdfDBBy9TH0rJhJkzZzb1knjttdeYM2cOffv2bTrupZdeomfPnk3bmbn8CjlNWio/8MAD6dKlC5/4xCeanvsdd9zBHXfcwac+9Smg1HNlzpw5bLnlls22yyabbML8+fPZcMMNW2wvSZIkSVJtVbJqiaqgoaGBoUOHMnToUPr378+YMWOaEhmNQ066dOnS9Lhxe8mSJYwdO5YFCxYwdepUunbtSp8+fXjrrbcAWHfddVu9bmMPjeWVX6dx3oq2NB7T0NDAkiVLgFJS4tJLL2X48OGtxtAYL8B2223X1HOi0dNPP816661Hjx49Wr124zUb77/zne9w4oknLlN37ty5zbbLW2+9Rffu3Vt7ipIkSZKkGluZyT7Vzp544gnmzJnTtD19+nR69+5d8fGvvfYam2yyCV27duXee+/l2WefbbFu165deffdd1cqzvXXX59evXo1zUtx3XXXNfXOaMnw4cO5/PLLm6755JNP8sYbbyxTp1evXixdurQpmXHkkUcyadIk7rrrLqDUa+S0007jW9/6FgA9evTg9ddfbzPe4cOHc9VVV7Fo0SIA/va3v/Hiiy82Wzcz+fvf/940vEWSJEmStHpqsUdGRNydmXtFxA8y89vVDKrWKlkutT0tWrSIU089lVdffZW11lqLf/mXf+HKK6+s+PgjjzyS/fffn0GDBjFgwAC23XbbFuuOGjWKHXbYgYEDB64wT0YlxowZw0knncSbb77Jxz72Ma6++upW63/5y19m7ty5DBw4kMxk44035ve///0K9YYNG8akSZPYe++96d69OzfddBOnnnoqo0ePZunSpRx99NGccsopAOy///4ccsgh3HTTTVx66aUtXnvYsGE8/vjj7LLLLkBpCM///M//0NDQsELdqVOnsvPOO7PWWnZSkiRJkqTVWTR2w19hR8RjwFeAK4AvAstMTpCZj3R4dB1g0KBBOWXKlGXKHn/8cfr161ejiAQwbdo0fvSjH3HdddfV5Ppf/epXGTFiBHvttdcK+zrL62PH069ts87Ui0au0jUm7N56D509JjrljiRJkqQWNT8p4nJa+/n5u8AZwObAj5bbl8BnVy4uaUWf+tSn2HPPPVm6dGmzPSY62vbbb99sEkOSJEmStHppMZGRmeOB8RHxfzPz+1WMSWuoL33pSzW79gknnFCza0uSJEmSKlfJ8qvfj4gRwO5F0X2ZeUvHhlV9rS35qTVXS0OvJEmSJEm10eaqJRFxAfBV4LHi9tWirNPo1q0bCxcu9EurlpGZLFy4kG7dutU6FEmSJElSoZIlGvYFBmTmewARMQaYBnynIwOrps0335x58+axYMGCWoei1Uy3bt3YfPPNax2GJEmSJKlQ6VqTPYGXi8frd1AsNdO1a1f69u1b6zAkSZIkSVIbKklkXABMi4h7KS2FsjudqDeGJEmSJEmqH5VM9jkuIu4DPk0pkfHtzPx7RwcmSZIkSZK0vIqGlmTmC8DNHRyLJEmSJElSq9pctUSSJEmSJGl10WGJjIi4KiJejIhZZWXnRMTfImJ6cft82b7vRMRTEfFERAwvK9+nKHsqIs4oK+8bEX+OiDkR8euIWLujnoskSZIkSVo9tJrIiIgu5YmID+gaYJ9myi/JzAHF7dbiOp8ADge2K475eUQ0REQD8DPgX4FPAEcUdQF+UJxra+AV4PiVjFOSJEmSJNWJVhMZmfkeMCMitvygJ87Miby/ZGtbDgBuyMy3M/MZ4ClgcHF7KjOfzsx3gBuAAyIigM8C44vjxwAHftAYJUmSJElSfalkss9NgdkRMRl4o7EwM0es5DVPiYiRwBTgG5n5CrAZ8FBZnXlFGcDzy5XvBGwIvJqZS5qpv4KIGAWMAthyyw+ck5EkSZIkSauJShIZ57bj9S4Hvg9kcX8x8CVKy7ouL2m+x0i2Ur9ZmXklcCXAoEGDWqwnSZIkSZJWb20mMjJzQkT0BrbOzLsi4kNAw8pcLDP/0fg4In4J3FJszgO2KKu6OTC/eNxc+UtAz4hYq+iVUV5fkiRJkiR1Um2uWhIRJ1Cai+IXRdFmwO9X5mIRsWnZ5kFA40SiNwOHR8Q6EdEX2BqYDDwMbF2sULI2pQlBb87MBO4FDimOPwa4aWVikiRJkiRJ9aOSoSWjKU26+WeAzJwTEZu0dVBEjAOGAhtFxDzgbGBoRAygNAxkLnBicc7ZEfEb4DFgCTA6M5cW5zkFuJ1SL5CrMnN2cYlvAzdExH8C04BfVfKEJUmSJElS/aokkfF2Zr5TWigEImItWpmPolFmHtFMcYvJhsw8DzivmfJbgVubKX+aUoJFkiRJkiStIdocWgJMiIgzge4R8Tngt8AfOjYsSZIkSZKkFVWSyDgDWAA8SmkoyK3AWR0ZlCRJkiRJUnMqWbXkvYgYQ2mOjASeKCbblCRJkiRJqqo2ExkRsS9wBfBXIIC+EXFiZt7W0cFJkiRJkiSVq2Syz4uBPTPzKYCI2Ar4X8BEhiRJkiRJqqpK5sh4sTGJUXgaeLGD4pEkSZIkSWpRiz0yIuLg4uHsiLgV+A2lOTIOBR6uQmySJEmSJEnLaG1oyf5lj/8B7FE8XgD06rCIJEmSJEmSWtBiIiMzj6tmIJIkSZIkSW2pZNWSvsCpQJ/y+pk5ouPCkiRJkiRJWlElq5b8HvgV8AfgvY4NR5IkSZIkqWWVJDLeysyfdngkkiRJkiRJbagkkfGTiDgbuAN4u7EwMx/psKgkSZIkSZKaUUkioz9wNPBZ3h9aksW2JEmSJElS1VSSyDgI+FhmvtPRwUiSJEmSJLWmSwV1ZgA9OzoQSZIkSZKktlTSI+MjwF8i4mGWnSPD5VclSZIkSVJVVZLIOLvDo5AkSZIkSapAm4mMzJxQjUAkSZIkSZLa0mYiIyJep7RKCcDaQFfgjcz8cEcGJkmSJEmStLxKemT0KN+OiAOBwR0WkSRJkiRJUgsqWbVkGZn5e+CzHRCLJEmSJElSqyoZWnJw2WYXYBDvDzWRJEmSJEmqmkpWLdm/7PESYC5wQIdEI0mSJEmS1IpK5sg4rhqBSJIkSZIktaXFREZEfLeV4zIzv98B8UiSJEmSJLWotR4ZbzRTti5wPLAhYCJDkiRJkiRVVYuJjMy8uPFxRPQAvgocB9wAXNzScZIkSZIkSR2l1TkyImID4OvAkcAYYGBmvlKNwCRJkiRJkpbX2hwZFwEHA1cC/TNzUdWikiRJkiRJakaXVvZ9A/gocBYwPyL+Wdxej4h/Vic8SZIkSZKk97U2R0ZrSQ5JkiRJkqSqM1khSZIkSZLqhokMSZIkSZJUN0xkSJIkSZKkumEiQ5IkSZIk1Q0TGZIkSZIkqW6YyJAkSZIkSXXDRIYkSZIkSaobJjIkSZIkSVLdMJEhSZIkSZLqhokMSZIkSZJUN0xkSJIkSZKkutFhiYyIuCoiXoyIWWVlG0TEnRExp7jvVZRHRPw0Ip6KiJkRMbDsmGOK+nMi4piy8h0j4tHimJ9GRHTUc5EkSZIkSauHjuyRcQ2wz3JlZwB3Z+bWwN3FNsC/AlsXt1HA5VBKfABnAzsBg4GzG5MfRZ1RZcctfy1JkiRJktTJdFgiIzMnAi8vV3wAMKZ4PAY4sKz82ix5COgZEZsCw4E7M/PlzHwFuBPYp9j34cx8MDMTuLbsXJIkSZIkqZOq9hwZH8nMFwCK+02K8s2A58vqzSvKWiuf10y5JEmSJEnqxFaXyT6bm98iV6K8+ZNHjIqIKRExZcGCBSsZoiRJkiRJqrVqJzL+UQwLobh/sSifB2xRVm9zYH4b5Zs3U96szLwyMwdl5qCNN954lZ+EJEmSJEmqjWonMm4GGlceOQa4qax8ZLF6yc7Aa8XQk9uBYRHRq5jkcxhwe7Hv9YjYuVitZGTZuSRJkiRJUie1VkedOCLGAUOBjSJiHqXVRy4EfhMRxwPPAYcW1W8FPg88BbwJHAeQmS9HxPeBh4t638vMxglEv0JpZZTuwG3FTZIkSZIkdWIdlsjIzCNa2LVXM3UTGN3Cea4CrmqmfAqw/arEKEmSJEmS6svqMtmnJEmSJElSm0xkSJIkSZKkumEiQ5IkSZIk1Q0TGZIkSZIkqW6YyJAkSZIkSXXDRIYkSZIkSaobJjIkSZIkSVLdMJEhSZIkSZLqhokMSZIkSZJUN0xkSJIkSZKkumEiQ5IkSZIk1Q0TGZIkSZIkqW6YyJAkSZIkSXXDRIYkSZIkSaobJjIkSZIkSVLdMJEhSZIkSZLqhokMSZIkSZJUN0xkSJIkSZKkumEiQ5IkSZIk1Q0TGZIkSZIkqW6YyJAkSZIkSXXDRIYkSZIkSaobJjIkSZIkSVLdMJEhSZIkSZLqhokMSZIkSZJUN0xkSJIkSZKkumEiQ5IkSZIk1Q0TGZIkSZIkqW6YyJAkSZIkSXXDRIYkSZIkSaobJjIkSZIkSVLdMJEhSZIkSZLqhokMSZIkSZJUN0xkSJIkSZKkumEiQ5IkSZIk1Q0TGZIkSZIkqW6YyJAkSZIkSXXDRIYkSZIkSaobJjIkSZIkSVLdMJEhSZIkSZLqhokMSZIkSZJUN0xkSJIkSZKkumEiQ5IkSZIk1Q0TGZIkSZIkqW7UJJEREXMj4tGImB4RU4qyDSLizoiYU9z3KsojIn4aEU9FxMyIGFh2nmOK+nMi4phaPBdJkiRJklQ9teyRsWdmDsjMQcX2GcDdmbk1cHexDfCvwNbFbRRwOZQSH8DZwE7AYODsxuSHJEmSJEnqnFanoSUHAGOKx2OAA8vKr82Sh4CeEbEpMBy4MzNfzsxXgDuBfaodtCRJkiRJqp5aJTISuCMipkbEqKLsI5n5AkBxv0lRvhnwfNmx84qylspXEBGjImJKRExZsGBBOz4NSZIkSZJUTWvV6Lq7Zub8iNgEuDMi/tJK3WimLFspX7Ew80rgSoBBgwY1W0eSJEmSJK3+apLIyMz5xf2LEXEjpTku/hERm2bmC8XQkReL6vOALcoO3xyYX5QPXa78vg4OXerUnvte/1b3b/ndR6sUiSRJkiQ1r+pDSyJi3Yjo0fgYGAbMAm4GGlceOQa4qXh8MzCyWL1kZ+C1YujJ7cCwiOhVTPI5rCiTJEmSJEmdVC16ZHwEuDEiGq9/fWb+MSIeBn4TEccDzwGHFvVvBT4PPAW8CRwHkJkvR8T3gYeLet/LzJer9zQkSZIkSVK1VT2RkZlPA59spnwhsFcz5QmMbuFcVwFXtXeMkiRJkiRp9bQ6Lb8qSZIkSZLUqlqtWrJGm7D7Hq3u32PihCpFIkmSJElSfbFHhiRJkiRJqhsmMiRJkiRJUt0wkSFJkiRJkuqGiQxJkiRJklQ3TGRIkiRJkqS64aolzdjx9Gtb3T/1opFVikSSJEmSJJWzR4YkSZIkSaob9siQVLFdL9211f3n+5YiSZIkqYPZI0OSJEmSJNUNExmSJEmSJKlumMiQJEmSJEl1w0SGJEmSJEmqGyYyJEmSJElS3TCRIUmSJEmS6oaJDEmSJEmSVDdMZEiSJEmSpLphIkOSJEmSJNUNExmSJEmSJKlurFXrACRJH9yE3fdodf8eEydUKRJJkiSpuuyRIUmSJEmS6oaJDEmSJEmSVDdMZEiSJEmSpLrhHBmSquayb/yh1f2nXLx/lSKRJEmSVK/skSFJkiRJkuqGiQxJkiRJklQ3TGRIkiRJkqS6YSJDkiRJkiTVDRMZkiRJkiSpbrhqiSR1gB1Pv7bV/VMvGlmlSCRJkqTOxR4ZkiRJkiSpbtgjQ5KkVkzYfY826+wxcUIVIpEkSRLYI0OSJEmSJNURe2SoU/OXVEmSJEnqXExkSJIkSeo02vohyx+xpPrn0BJJkiRJklQ37JEhSaprLnUrSZK0ZrFHhiRJkiRJqhv2yFBN+UuqJEnSmsPPfpLag4mMlfDc9/q3uv+IXh9udf/5NrskSc1ykj5JktQWv1FLWm2cd9Qhre7/j/8ZX6VIJDXHX1KllWOCTpLal3NkSJIkSZKkulH3PTIiYh/gJ0AD8N+ZeWGNQ5LUQR4/755W9/f7j89WKZKOt+ulu7a63yFqktR+7G0krRx7G6lW6vqTcEQ0AD8DPgfMAx6OiJsz87HaRrZqLvvGH1rdf8rF+1cpEqm+nHPOOau0v5rammuHNubakaRV5RcQSVK9qutEBjAYeCoznwaIiBuAA4C6TmTofU6sKq0cE6Lv831E9cpeAlLz7LVYOd9H1FnV+7/yzYDny7bnATvVKJaqaWtCRICD+53c6v5fvzux1f2r0y/XHc0vfJJWle8jJW32NGLVE0e2deX8std+TIhWTyXvI6vaa9H3kff52m4/HZ00shfdsiIzax3DSouIQ4HhmfnlYvtoYHBmnrpcvVHAqGLz48ATVQ101W0EvFTrINYgtnf12NbVY1tXl+1dPbZ19djW1WV7V49tXT22dfXUa1u/lJn7tFWp3lNo84AtyrY3B+YvXykzrwSurFZQ7S0ipmTmoFrHsaawvavHtq4e27q6bO/qsa2rx7auLtu7emzr6rGtq6ezt3W9L7/6MLB1RPSNiLWBw4GbaxyTJEmSJEnqIHXdIyMzl0TEKcDtlJZfvSozZ9c4LEmSJEmS1EHqOpEBkJm3ArfWOo4OVrfDYuqU7V09tnX12NbVZXtXj21dPbZ1ddne1WNbV49tXT2duq3rerJPSZIkSZK0Zqn3OTIkSZIkSdIaxETGaiIiekbEyWXbQyPillrG1NlFxEci4vqIeDoipkbEgxFxUNH2r0XE9IiYGRF3RcQmtY63nkVEn4iYtVzZORHxzYjYOSL+XLT34xFxTo3C7DQiYmnRno23PmWv62kR8ZeI+K9ax9mZRMSiiOhf1uYvR8QzxeO7ah1fZxER/yciboiIv0bEYxFxa0RsU+z7WkS8FRHr1zrOzqD4/zAjYttie4XPJRFxTUQcUpsIO4+y9+zZETEjIr4eEV2KfeWfSRpve9c65nrWzP+RZxTl+xX/R84o3l9OrHWs9a54D7m4bPubjZ/zGj8H1iy4TqbsdT0rIn4bEZuVvcb/HhF/K9teu9bxtoe6nyOjE+kJnAz8vD1OFhFrZeaS9jhXZxQRAfweGJOZXyzKegMjgFeA+zNzv6L8AmA0cHaNwu3sxgD/lpkzIqIB+HitA+oEFmfmgPKCiOhD8bqOiO7AtIi4MTP/VIsAO6PMfBQYAKUveMAtmTm+pkF1IsX79o2U3rcPL8oGAB8BngSOoLSa2UHANTUKszM5AphEaUW4c2obSqfX9J5d/HByPbA+73/uaPpMonbR3P+RXSnNJzA4M+dFxDpAn1oE18m8DRwcERdk5ku1DqaTK38fGQscVrZ9DrAoMzvVj1j2yKiRIts+q7j9O3AhsFWRJbuoqLZeRIwvfj0dW3yIIyJ2jIgJRS+C2yNi06L8vog4PyImAF+tzTOrG58F3snMKxoLMvPZzLy0vFLR5j0oJTfUMTYBXgDIzKWZ+ViN4+n0MnMxMB3YrNaxSB/AnsC7y71vT8/M+yNiK2A94CxKX8C1CiJiPWBX4HhKiQxVSWa+CIwCTmn83Keq6EHpB96FAJn5dmY+UduQOoUllBJEX6t1IGuY+4F/qXUQHc0eGTUQETsCxwE7AQH8GTgK2L4sczYU+BSwHTAf+BOwa0T8GbgUOCAzF0TEYcB5wJeK0/fMzD2q+HTq1XbAI63sHxIR04ENgTeAM6sS1ZrpEuCJiLgP+COlX1vfqm1Ida978foFeCYzDyrfGRG9gK2BiVWPTFp52wNTW9h3BDCO0oe3j0fEJsUXQq2cA4E/ZuaTxTCpgbUOaE2SmU8XQ0sah7UOKXtPB/hCZv61BqF1Ft2Xa88LMvPXEXEz8GxE3A3cAozLzPdqE2Kn8jNgZkT8sNaBrAkiYi3gXyl9pu7UTGTUxm7AjZn5BkBE/D9gSDP1JmfmvKLOdEpd3F6l9GHuziJR30Dxa3bh1x0XducVET+j9Hd5BzidZYeWfBv4IXBS7SKsey0tj5SZ+b2iC9ww4IuUvpAMrVZgndQK3WYLQyJiJqXhOxdm5t+rHJfUUQ4HDsrM94r/Uw+l9OFZK+cI4MfF4xuK7Zbm7XL5u45R3hvDoSXtq9n/IzPzyxHRH9gb+CbwOeDYKsfW6WTmPyPiWuA0YHGt4+nEyhN09wO/qmUw1WAiozYq7Sr4dtnjpZT+XgHMzsxdWjjmjVUJbA0yG/hC40Zmjo6IjYApzdS9GfhdtQLrpBYCvZYr2wB4BqD4ZenyiPglsCAiNszMhVWOcU3QOEfGNsCkYo6M6W0eJa0eZgMrTCwZETtQ6mHUmOBfG3gaExkrJSI2pDT8cvuISEo/mCRwLc2/jzvuvZ1FxMcofe57EehX43DWKMVcR49GxHWUPqMcW9uIOo0fU+oJfXWtA+nEWvoRq9NyjozamAgcGBEfioh1KU1M9idK4/Pa8gSwcUTsAqXJiSJiu44LtdO6B+gWEV8pK/tQC3V3A+zCuQoycxHwQkTsBRARGwD7UPoyvW/ZOOCtKX14e7U2ka4ZMvNJ4ALg27WORfoA7gHWiYgTGgsi4tPAT4BzMrNPcfsosFkxgbM+uEOAazOzd9GeW1D6QrcB8NGI6AdNE2R/ktJ8O2onEbExcAVwWWba26VKImK9Ylh3owHAszUKp9PJzJeB31Cad0dqF/bIqIHMfKSY0X5yUfTfmTk1Iv4UpSUqbwP+t4Vj34nSUmc/jdISc2tRynLOrkLonUZmZkQcCFwSEd8CFlDqzdL4xa5xPGoArwFfrk2kncpI4Gfx/jJc52bmXyPiPEp/hzcpTQp1ZGYurVmUa44rgG9GRN/MfKbWwUhtKd63DwJ+HKXlEt8C5lIaivaV5arfSGm4yQ+qGWMncQSlCcjL/Y5Sex4FXB0R3YB3gS9n5mtVjq8zauwS3pXS/4PXAT8q27/8HBn/6YpIq2T5OTL+SGm+uW9FxC8oDX94A3tjtLeLgVOWKzurWPQAgMzcvLohqZ6FyV5JkiRJklQvHFoiSZIkSZLqhokMSZIkSZJUN0xkSJIkSZKkumEiQ5IkSZIk1Q0TGZIkSZIkqW6YyJAkSZIkSXXDRIYkSeoQEfHvEfGhDjjvsRFx2Uoc1ycivli2PSgifroKcZy53PYDK3suSZJUORMZkiSpo/w70GwiIyIaqhwLQB+gKZGRmVMy87RVON8yiYzM/MwqnEuSJFXIRIYkSWuwiBgZETMjYkZEXBcRvSPi7qLs7ojYsqh3TUQcUnbcouJ+aETcFxHjI+IvETE2Sk4DPgrcGxH3Nh4TEd+LiD8DZ0XEjWXn+1xE/L9W4jwuIp6MiAnArmXlG0fE7yLi4eK2a1G+R0RML27TIqIHcCEwpCj7WhH7LUX9cyLiquK5PF3E33iN30fE1IiYHRGjirILge7FucYu1yYRERdFxKyIeDQiDmutrVbhzydJ0hpprVoHIEmSaiMitgP+A9g1M1+KiA2AMcC1mTkmIr4E/BQ4sI1TfQrYDpgP/Kk4308j4uvAnpn5UlFvXWBWsUZtMgAAAwJJREFUZn63+AL/eERsnJkLgOOAq1uIc1PgXGBH4DXgXmBasfsnwCWZOalIutwO9AO+CYzOzD9FxHrAW8AZwDczc7/ivEOXu9S2wJ5AD+CJiLg8M98FvpSZL0dEd+DhiPhdZp4REadk5oBmQj4YGAB8EtioOGZiS20FTGqtcSVJ0rLskSFJ0prrs8D4xkRDZr4M7AJcX+y/DtitgvNMzsx5mfkeMJ3SEI7mLAV+V1wri/MfFRE9i+ve1sJxOwH3ZeaCzHwH+HXZvr2ByyJiOnAz8OGi98WfgB8VPSt6ZuaSCp7H/2bm20V7vAh8pCg/LSJmAA8BWwBbt3Ge3YBxmbk0M/8BTAA+XeyrtK0kSVIL7JEhSdKaK4Bso07j/iUUP4AUvSnWLqvzdtnjpbT8+eKtzFxatn018AdKvSV+20ayoaU4uwC7ZObi5covjIj/BT4PPBQRe7dy7kYrPI+i18bexTXejIj7gG5tnKe14SKVtpUkSWqBPTIkSVpz3Q38W0RsCFAMLXkAOLzYfyTvD3uYS2loB8ABQNcKzv86pWEazcrM+ZSGWJwFXNPKef4MDI2IDSOiK3Bo2b47gFMaNyJiQHG/VWY+mpk/AKZQGjbSajwtWB94pUhibAvsXLbv3SKe5U0EDouIhojYGNgdmPwBrytJklpgIkOSpDVUZs4GzgMmFEMnfgScBhwXETOBo4GvFtV/CewREZMpDfV4o4JLXAnc1jjZZwvGAs9n5mOtxPkCcA7wIHAX8EjZ7tOAQcXkpI8BJxXl/15MtjkDWExp2MpMYEkxsenXKogf4I+UembMBL5PaXhJ+fOb2TjZZ5kbi2vNAO4BvpWZf6/wepIkqQ1RGqIqSZJUfRFxGTAtM39V61gkSVJ9MJEhSZJqIiKmUurZ8bnMfLut+pIkSWAiQ5IkrUYi4s/AOssVH52Zj9YiHkmStPoxkSFJkiRJkuqGk31KkiRJkqS6YSJDkiRJkiTVDRMZkiRJkiSpbpjIkCRJkiRJdcNEhiRJkiRJqhv/H/NmmCg7wQlpAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x273159ee390>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(18,6))\n",
    "sns.countplot(x='country_destination', data=df_without_NDF, hue='first_device_type')\n",
    "plt.ylabel('Number of users')\n",
    "plt.title('First device type vs. country destination')\n",
    "sns.despine()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Around 60% of bookers use Apple devices. Particularly in the US."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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sBARERERERGREkcJCxEREcnhkUceYfLkyZ7ttm3bMmjQIM/2o48+yquvvsr+/fvp3r37RbU9ffp0hg8fXmix5sXLywuXy0XDhg1p1KgRr776KufPn7+ktipUqJBjX1JSErNmzbrcMEVERCQPWnRTRETkKtB41IxCbW/9K30vWB4aGsrHH3/M3/72N86fP8+RI0c4efKkp3z16tVMnjyZG264gXnz5hVqbIWlXLlyJCQkAHDo0CF69erFiRMneP755wul/YyERa9evQqlPREREclKIyxEREQkh7CwMFavXg3A1q1b8fX1pWLFivz666+cO3eO7du3ExAQQFJSEr6+voB75ETXrl1p164dd9xxB48//rinvWnTplGnTh1atGhBXFycZ/+ePXuIjIzE39+fyMhI9u7dS3p6OrVr18Zay/HjxylVqhSxsbEANG/enF27drFixQpcLhcul4uAgABOnTp1weupUaMG77zzDq+99hrWWtLT0xk1ahTBwcH4+/vz9ttvA3DgwAEiIiJwuVz4+vqycuXKLO0cOXKEZs2a8fnnnzN69GhWrlyJy+Vi0qRJpKSkMGDAAPz8/AgICCA6OtrTL126dKFdu3bUrVu30BImIiIiv3caYSEiIiI53HDDDXh7e7N3715Wr15Ns2bN+Pnnn1mzZg2VK1fG39+fMmXK5DguISGBjRs3UrZsWerWrctDDz2Et7c3zz33HOvXr6dy5cq0atWKgIAAAIYPH07fvn3p168fH3zwASNGjGDhwoXUqVOHbdu28eOPP9K4cWNWrlxJ06ZN2bdvH7fffjuPPPIIr7/+OmFhYSQnJ+Pj45PvNdWuXZvz589z6NAhFi1aROXKlVm3bh3nzp0jLCyMqKgo5s+fT9u2bRkzZgzp6emcOXPGc/zBgwfp3Lkz48aNo02bNpQvX56JEyeyePFiAP75z38CsHnzZhITE4mKimLHjh0ArF27li1btnDNNdcQHBxMx44dCQoKuuz3SURE5PdMIyxEREQkVxmjLDISFs2aNfNsh4aG5npMZGQklStXxsfHhwYNGrBnzx6+/fZbWrZsSfXq1SlTpgw9evTw1F+zZo1nSkWfPn1YtWoV4B5JERsbS2xsLE8++SSrVq1i3bp1BAcHe2IbOXIkU6ZM4fjx43h7F+w7GGstAEuXLmXGjBm4XC6aNm3K0aNH2blzJ8HB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1SgoKMjGx8dfsfOFTQ3Lt07cQ3FXIBIREfm92L59O/Xr1y/uMKSE0udDRESucrmtVZlDcYywEBERERERERG5ICUsRERERERERKTEUcJCREREREREREocJSxEREREREREpMRRwkJEREREREREShwlLERERERERESkxPEu7gCKU+NRM/Kts/6VvlcgEhERkZLHGMN9993HRx99BEBaWhrXX389TZs2ZfHixZfVdv/+/VmxYgWVKlXi7NmzhISE8NJLL3HjjTdeUludOnWie/fuWfZPnjyZIUOGcM0111xWrCIiIlI8/tAJCxERkatF2NRg3/DXAAAgAElEQVSwQm0v7qG4fOuUL1+eLVu2cPbsWcqVK8eyZcsuKaGQl1deeYXu3btjrWXy5Mm0atWKLVu2UKZMmUJpf/Lkydx3331KWIiIiFylNCVERERE8tS+fXs+//xzAGbPns29997rKVu7di2hoaEEBAQQGhrK999/D0B6ejqPPfYYfn5++Pv7M3Xq1AuewxjDI488wp///Ge++OILAJYuXUqzZs0IDAzknnvuITk5GYDRo0fToEED/P39eeyxx3K09cwzz9C/f3+mTJnC/v37adWqFa1atfLE7+fnh6+vL0888YTnmAoVKvDoo48SGBhIZGQkhw8fvoweExERkcKihIWIiIjkqWfPnsyZM4eUlBQ2bdpE06ZNPWX16tUjNjaWjRs38sILL/DUU08B8M477/Djjz+yceNGNm3aRO/evQt0rsDAQBITEzly5Ajjxo1j+fLlbNiwgaCgIF599VWOHTvGggUL2Lp1K5s2beLpp5/Ocvzjjz/OoUOHmDZtGiNGjOCGG24gOjqa6Oho9u/fzxNPPME333xDQkIC69atY+HChQCcPn2awMBANmzYQIsWLXj++ecLqfdERETkcmhKiIiIiOTJ39+fpKQkZs+eTYcOHbKUnThxgn79+rFz506MMaSmpgKwfPlyhg0bhre3+58ZVapUKdC5rLUA/Pe//2Xbtm2Ehbmnwfz22280a9aMSpUq4ePjw6BBg+jYsSOdOnXyHPv3v/+dpk2b8s477+Ta9rp162jZsiXVq1cHoHfv3sTGxnL33XdTqlQpevToAcB9991H165dC9o9IiIiUoQ0wkJEREQuqHPnzjz22GNZpoOAe/pFxroTn332GSkpKYA78WCMuejzbNy4kfr162OtpU2bNiQkJJCQkMC2bdt4//338fb2Zu3atXTr1o2FCxfSrl07z7HBwcGsX7+eY8eO5dp2RjKkIC4ldhERESl8SliIiIjIBQ0cOJBnn30WPz+/LPtPnDjhWYRz+vTpnv1RUVG89dZbpKWlAeSZRMhgrWXKlCkcOHCAdu3aERISQlxcHLt27QLgzJkz7Nixg+TkZE6cOEGHDh2YPHkyCQkJnjbatWvH6NGj6dixI6dOnQKgYsWKntdNmzZlxYoVHDlyhPT0dGbPnk2LFi0AOH/+PPPmzQNg1qxZhIeHX2pXiYiISCHSlBARERG5oJtuuomHH344x/7HH3+cfv368eqrr9K6dWvP/kGDBrFjxw78/f0pXbo0gwcPZvjw4TmOHzVqFH//+985c+YMISEhREdHU6ZMGapXr8706dO59957OXfuHADjxo2jYsWKdOnShZSUFKy1TJo0KUt799xzD6dOnaJz584sWbKEIUOG0L59e66//nqio6N56aWXaNWqFdZaOnToQJcuXQD301C2bt1K48aNqVy5MnPnzi3M7hMREZFLZC5miOTVIigoyMbHx+dbr/GoGfnWWf9K33zrFORRcwV5fJyIiEiG7du3U79+/eIO4w+hQoUKnqeQXC30+RARkatcgeZfakqIiIiIiIiIiJQ4SliIiIjIH9rVNrpCRETkj0IJCxEREREREREpcZSwEBEREREREZESRwkLERERERERESlxlLAQERERERERkRJHCQsRERHJVWhoKABJSUmUK1cOl8tFgwYNGDZsGOfPny9wO2PHjmXixIlFFaaIiIj8TnkXdwAiIiKSvxURLQq1vRaxK/Kts3r1as/r2267jYSEBNLS0mjdujULFy6ka9euhRqTiIiISGYaYSEiIiK5qlChQo593t7ehIaGsmvXLpKTk4mMjCQwMBA/Pz8WLVrkqTd+/Hjq1q3LnXfeyffff38lwxYREZHfCY2wEBERkQI7c+YMX3/9NS+88AI+Pj4sWLCASpUqceTIEUJCQujcuTMbNmxgzpw5bNy4kbS0NAIDA2ncuHFxhy4iIiJXGSUsREREJF8//PADLpcLYwxdunShffv2pKam8tRTTxEbG0upUqX4+eefOXjwICtXruQvf/kL11xzDQCdO3cu5uhFRETkaqSEhYiIiOQrYw2LzGbOnMnhw4dZv349pUuXpmbN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UFOnTmX//fdfruxjH/sYl19+eafH9OvXj4suuoiPfvSjvP/972fw4MGd1j3hhBNYtmwZw4cP5+CDD+ZHP/rRcr02AM4880xmzJjByJEjuf7669l8881rjn/kyJG8+93vZrvttuPYY49dKSnx8ssvs+OOO3LBBRdw3nnnrXT8FVdcwYUXXsh73vMett12W6699lqgMpTk7LPPdtJNSZIaIN7ojNvdwejRo/Ouu+6qWm/UqZdWrTP73AlV64yZNKZqnVkTZ1WtI0lSm/nz5zNs2LBmh6GS8t+HJKmbq2nMZy2rhHwjItaLiL4RcWNEPBURh1c7TpIkSZIkaXXVMiRkXGa+AOxNZUjI1sCpdY1KkiRJkiS1tFoSFn2L+48AUzPzmTrGI0mSJEmSVNOypr+IiD8BS4ATImIj4JUqx0iSJEmSJK22qgmLzDwtIr4OvJCZyyLiJWDf+isaWvgAACAASURBVIcmqadwYlpJkiRJb1TVhEVETOjwuOOu6ktsSJIkSZIkrYZahoS8t8PjfsAewN2YsJAkSZIkSXVSy5CQiR23I2J94LK6RSRJklby05/tuEbP968H3VG1zle/+lUuv/xyevfuTa9evfj+97/PTjvttEbjADj77LM5/fTT27d79+7N8OHDWbp0KcOGDWPy5Mk88cQT7L333tx3331r/PqdWbJkCR/+8Ie56aab6N27N/PmzWPixIksWrSIzGTChAmcccYZRAS33HILa621Fu973/sAOOqoo9h777058MADV/v6e+65Jz/72c8YNGjQmnpKkiR1K7WsErKil4Gt1nQgkiSpPH73u99x7bXXcvfddzN37lxuuOEGNttsszV6jczk9ddf5+yzz16uvH///syZM4f77ruPtdZaiwsvvHCNXrdWF198MQcccAC9e/dmyZIljB8/ntNOO40HHniAe++9l9tuu43vfe97ANxyyy3cdttta+S6ba/LEUcc0X5+SZJaUdWERUT8IiKuKW7XAvcDV9c/NEmS1CyPP/44G264IWuvvTYAG264Ie94xzsAGDJkCKeffjq77LILo0eP5u6772avvfZiyy23bE8uLF68mD322IORI0cyfPhwrr668tFh4cKFDBs2jBNOOIGRI0dyzDHHsGTJEkaMGMFhhx22Uhy77rorDz74IADLli3j2GOPZdttt2XcuHEsWbIEgDlz5rDzzjuz/fbbs//++/Pss88CMHbsWD7/+c+z4447svXWW3Prrbe2n+fUU0/lve99L9tvvz3f//73V/kaTJkyhX33rcwzfvnllzNmzBjGjRsHwFve8hbOP/98zjnnHBYuXMiFF17It771LUaMGNF+nRkzZvC+972PLbbYgmnTprWf99xzz22/9plnnrnK1+XRRx9l/PjxTJ06dbXaT5KknqCWHhb/BZxX3L4G7JaZp9U1KkmS1FTjxo3j0UcfZeutt+aEE05g+vTpy+3fbLPN+N3vfseuu+7KUUcdxbRp07j99tv54he/CEC/fv246qqruPvuu7n55pv5zGc+Q2YCcP/99zNhwgTuueceLrnkkvYeFVOmTFnuGkuXLuW6665j+PDhACxYsIATTzyRefPmMXDgQK688koAJkyYwNe//nXmzp3L8OHD+dKXvrTcOe644w6+/e1vt5f/8Ic/ZP311+fOO+/kzjvv5Ac/+AEPP/zwctd+7bXXeOihhxgyZAgA8+bNY9SoUcvV2XLLLVm8eDEbbLABxx9/PJ/+9KeZM2cOu+66K1BJ+sycOZNrr72W006rfHS6/vrrWbBgAXfccQdz5sxh9uzZzJgxY6XXZfDgwQwaNIhXX32Vp59+ejVaUJKk7q+WOSymV6sjSZJ6lnXXXZfZs2dz6623cvPNN3PwwQdzzjnncNRRRwEwfvx4AIYPH87ixYsZMGAAAwYMoF+/fjz33HOss846nH766cyYMYNevXrx17/+lb///e8ADB48mJ133rnTa7f1uIBKD4tjjjmGxx57jKFDh7aXjxo1ioULF/L888/z3HPPsfvuuwNw5JFHctBBB7Wf64ADDliuPlSSBnPnzm3v9fD888+zYMEChg4d2n7cU089xcCBA9u3M3PF1dLadVa+33770atXL9797ne3P/frr7+e66+/nh122AGo9ERZsGABm2+++Spfl4033pjHHnuMt771rZ2+XpIk9VS1rBIiSZJaUO/evRk7dixjx45l+PDhTJ48uT1h0TZUpFevXu2P27aXLl3KlClTePLJJ5k9ezZ9+/ZlyJAhvPLKKwCss846XV63rcfFijpep21eiWrajunduzdLly4FKsmHSZMmsddee3UZQ1u8ANtuu217T4g2Dz30EOuuuy4DBgzo8tpt12y7/8IXvsAnP/nJ5eouXLhwla/LK6+8Qv/+/bt6ipIk9VirM+mmJEnq4e6//34WLFjQvj1nzhwGDx5c8/HPP/88G2+8MX379uXmm2/mkUce6bRu3759+cc//rFaca6//voMGjSofd6Iyy67rL23RWf22msvLrjggvZrPvDAA7z00kvL1Rk0aBDLli1rT1ocdthhzJw5kxtuuAGo9AI5+eST+dznPgfAgAEDePHFF6vGu9dee3HxxRezePFiAP7617/yxBNPrLJuZvK3v/2tfViKJEmtptMeFhFxY2buERFfz8zPNzIoSZK0vFqWIV2TFi9ezMSJE3nuuefo06cP73znO7noootqPv6www5jn332YfTo0YwYMYJtttmm07rHHXcc22+/PSNHjlxpHotaTJ48meOPP56XX36ZLbbYgksuuaTL+p/4xCdYuHAhI0eOJDPZaKON+PnPf75SvXHjxjFz5kz23HNP+vfvz9VXX83EiRM58cQTWbZsGUcccQQnnXQSAPvssw8HHnggV199NZMmTer02uPGjWP+/PnssssuQGXozY9//GN69+69Ut3Zs2ez884706ePHWIlSa0p2roorrQj4o/AvwMXAv8GLDdAMzPvrnt0q2n06NF51113Va036tRLq9aZfe6EqnXGTBpTtc6sibOq1pF6Kv+PSG/c/PnzGTZsWLPDaGn33HMP3/zmN7nsssuacv1TTjmF8ePHs8cee6y0z38fkqRubtUTQK2gq5T9F4HTgE2Bb66wL4EPrl5ckiRJ5bfDDjvwgQ98gGXLlq2yB0S9bbfddqtMVkiS1Co6TVhk5jRgWkT838z8SgNjkiRJKoWPf/zjTbv2scce27RrS5JUBrUsa/qViBgP7FYU3ZKZ19Y3LEmS1NVSmmpdnQ3nlSSpp6m6SkhEfA04BfhjcTulKJMkSXXSr18/nn76ab+cajmZydNPP02/fv2aHYokSXVXy7TTHwVGZObrABExGbgH+EI9A5MkqZVtuummLFq0iCeffLLZoahk+vXrx6abbtrsMCRJqrta18kaCDxTPF6/TrFIkqRC3759GTp0aLPDkCRJappaEhZfA+6JiJupLD2yG/aukCRJkiRJdVTLpJtTI+IW4L1UEhafz8y/1TswSZIkSZLUumoaEpKZjwPX1DkWSZIkSZIkoIZVQiRJkiRJkhrNhIUkSZIkSSqdLhMWEdErIu5rVDCSJEmSJElQJWGRma8D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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x27315883128>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(18,6))\n",
    "sns.countplot(x='country_destination', data=df_without_NDF_US, hue='first_device_type')\n",
    "plt.ylabel('Number of users')\n",
    "plt.title('First device type vs. country destination without the US')\n",
    "sns.despine()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "However, outside of the US, Windows descktop is far more common, in particular, there was little usage difference between Mac desktop and Windows desktop in Canada and Australia."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Users preferred language"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x27318b6b2b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12,6))\n",
    "sns.countplot(x='language', data=df_without_NDF)\n",
    "plt.xlabel('language')\n",
    "plt.ylabel('Number of users')\n",
    "plt.title('Users language distribution')\n",
    "sns.despine()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2732407e588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12,6))\n",
    "sns.countplot(x='language', data=df_without_NDF_US)\n",
    "plt.xlabel('language')\n",
    "plt.ylabel('Number of users')\n",
    "plt.title('Users language distribution without the US')\n",
    "sns.despine()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Even without the US, English is still the most preferred langauge, interestingly, Chinese is the 2nd most preferred languages for bookers."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Date time features\n",
    "\n",
    "Cast date columns to the correct data type and check to see they make sense."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2009-03-19 00:00:00\n",
      "2014-09-30 00:00:00\n",
      "---\n",
      "2010-01-01 00:00:00\n",
      "2014-09-30 00:00:00\n"
     ]
    }
   ],
   "source": [
    "df['date_account_created'] = pd.to_datetime(df['date_account_created'])\n",
    "df['timestamp_first_active'] = pd.to_datetime((df.timestamp_first_active // 1000000), format='%Y%m%d')\n",
    "\n",
    "print(df.timestamp_first_active.min())\n",
    "print(df.timestamp_first_active.max())\n",
    "print('---')\n",
    "print(df.date_account_created.min())\n",
    "print(df.date_account_created.max())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x273159844e0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12,6))\n",
    "df.timestamp_first_active.value_counts().plot(kind='line', linewidth=1.2)\n",
    "plt.xlabel('Date')\n",
    "plt.title('First active date over time')\n",
    "sns.despine()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x27318b9bb70>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12,6))\n",
    "df.date_account_created.value_counts().plot(kind='line', linewidth=1.2)\n",
    "plt.xlabel('Date')\n",
    "plt.title('New account created over time')\n",
    "sns.despine()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The pattern looks very similar between date account created and date first active, as it shoule be. From these two plots, we can see how fast Airbnb has grown since 2014."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### US Holidays"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [],
   "source": [
    "calendar = USFederalHolidayCalendar()\n",
    "# Set holidays equal to the holidays in our date range.\n",
    "holidays = calendar.holidays(start = df.timestamp_first_active.min(), \n",
    "                             end = df.timestamp_first_active.max())\n",
    "\n",
    "# us_bd contains more years of information than we need.\n",
    "us_bd = CustomBusinessDay(calendar = USFederalHolidayCalendar())\n",
    "# Set business_days equal to the work days in our date range.\n",
    "business_days = pd.DatetimeIndex(start = df.timestamp_first_active.min(), \n",
    "                                 end = df.timestamp_first_active.max(), \n",
    "                                 freq = us_bd)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create new date time features such as year, month, day of week, is business day, and is holiday."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [],
   "source": [
    "df['year_account_created'] = df.date_account_created.dt.year\n",
    "df['month_account_created'] = df.date_account_created.dt.month\n",
    "df['weekday_account_created'] = df.date_account_created.dt.weekday\n",
    "df['business_day_account_created'] = df.date_account_created.isin(business_days)\n",
    "df['business_day_account_created'] = df.business_day_account_created.map(lambda x: 1 if x == True else 0)\n",
    "df['holiday_account_created'] = df.date_account_created.isin(holidays)\n",
    "df['holiday_account_created'] = df.holiday_account_created.map(lambda x: 1 if x == True else 0)\n",
    "\n",
    "df['year_first_active'] = df.timestamp_first_active.dt.year\n",
    "df['month_first_active'] = df.timestamp_first_active.dt.month\n",
    "df['weekday_first_active'] = df.timestamp_first_active.dt.weekday\n",
    "df['business_day_first_active'] = df.timestamp_first_active.isin(business_days)\n",
    "df['business_day_first_active'] = df.business_day_first_active.map(lambda x: 1 if x == True else 0)\n",
    "df['holiday_first_active'] = df.timestamp_first_active.isin(holidays)\n",
    "df['holiday_first_active'] = df.holiday_first_active.map(lambda x: 1 if x == True else 0)\n",
    "\n",
    "# Drop unneeded features\n",
    "df = df.drop([\"timestamp_first_active\",\"date_account_created\"], axis = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>action</th>\n",
       "      <th>action_count</th>\n",
       "      <th>action_detail</th>\n",
       "      <th>action_type</th>\n",
       "      <th>affiliate_channel</th>\n",
       "      <th>affiliate_provider</th>\n",
       "      <th>age</th>\n",
       "      <th>apple_device</th>\n",
       "      <th>country_destination</th>\n",
       "      <th>day_pauses</th>\n",
       "      <th>...</th>\n",
       "      <th>year_account_created</th>\n",
       "      <th>month_account_created</th>\n",
       "      <th>weekday_account_created</th>\n",
       "      <th>business_day_account_created</th>\n",
       "      <th>holiday_account_created</th>\n",
       "      <th>year_first_active</th>\n",
       "      <th>month_first_active</th>\n",
       "      <th>weekday_first_active</th>\n",
       "      <th>business_day_first_active</th>\n",
       "      <th>holiday_first_active</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>show</td>\n",
       "      <td>127.0</td>\n",
       "      <td>p3</td>\n",
       "      <td>view</td>\n",
       "      <td>sem-non-brand</td>\n",
       "      <td>google</td>\n",
       "      <td>62.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>other</td>\n",
       "      <td>11.0</td>\n",
       "      <td>...</td>\n",
       "      <td>2014</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2014</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>show</td>\n",
       "      <td>9.0</td>\n",
       "      <td>p3</td>\n",
       "      <td>view</td>\n",
       "      <td>direct</td>\n",
       "      <td>direct</td>\n",
       "      <td>33.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NDF</td>\n",
       "      <td>1.0</td>\n",
       "      <td>...</td>\n",
       "      <td>2014</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2014</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>create</td>\n",
       "      <td>16.0</td>\n",
       "      <td>-unknown-</td>\n",
       "      <td>-unknown-</td>\n",
       "      <td>sem-brand</td>\n",
       "      <td>google</td>\n",
       "      <td>33.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NDF</td>\n",
       "      <td>4.0</td>\n",
       "      <td>...</td>\n",
       "      <td>2014</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2014</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>ajax_refresh_subtotal</td>\n",
       "      <td>152.0</td>\n",
       "      <td>change_trip_characteristics</td>\n",
       "      <td>click</td>\n",
       "      <td>direct</td>\n",
       "      <td>direct</td>\n",
       "      <td>33.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NDF</td>\n",
       "      <td>11.0</td>\n",
       "      <td>...</td>\n",
       "      <td>2014</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2014</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>index</td>\n",
       "      <td>8.0</td>\n",
       "      <td>-unknown-</td>\n",
       "      <td>-unknown-</td>\n",
       "      <td>direct</td>\n",
       "      <td>direct</td>\n",
       "      <td>33.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>GB</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>2014</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2014</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 46 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                  action  action_count                action_detail  \\\n",
       "0                   show         127.0                           p3   \n",
       "1                   show           9.0                           p3   \n",
       "2                 create          16.0                    -unknown-   \n",
       "3  ajax_refresh_subtotal         152.0  change_trip_characteristics   \n",
       "4                  index           8.0                    -unknown-   \n",
       "\n",
       "  action_type affiliate_channel affiliate_provider   age  apple_device  \\\n",
       "0        view     sem-non-brand             google  62.0           0.0   \n",
       "1        view            direct             direct  33.0           1.0   \n",
       "2   -unknown-         sem-brand             google  33.0           0.0   \n",
       "3       click            direct             direct  33.0           0.0   \n",
       "4   -unknown-            direct             direct  33.0           1.0   \n",
       "\n",
       "  country_destination  day_pauses          ...           year_account_created  \\\n",
       "0               other        11.0          ...                           2014   \n",
       "1                 NDF         1.0          ...                           2014   \n",
       "2                 NDF         4.0          ...                           2014   \n",
       "3                 NDF        11.0          ...                           2014   \n",
       "4                  GB         0.0          ...                           2014   \n",
       "\n",
       "  month_account_created weekday_account_created business_day_account_created  \\\n",
       "0                     1                       2                            0   \n",
       "1                     1                       2                            0   \n",
       "2                     1                       2                            0   \n",
       "3                     1                       2                            0   \n",
       "4                     1                       2                            0   \n",
       "\n",
       "  holiday_account_created year_first_active month_first_active  \\\n",
       "0                       1              2014                  1   \n",
       "1                       1              2014                  1   \n",
       "2                       1              2014                  1   \n",
       "3                       1              2014                  1   \n",
       "4                       1              2014                  1   \n",
       "\n",
       "  weekday_first_active  business_day_first_active  holiday_first_active  \n",
       "0                    2                          0                     1  \n",
       "1                    2                          0                     1  \n",
       "2                    2                          0                     1  \n",
       "3                    2                          0                     1  \n",
       "4                    2                          0                     1  \n",
       "\n",
       "[5 rows x 46 columns]"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 388,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Set nulls values equal to one less than the minimum.\n",
    "# I could set the nulls to 0, but the scale would be ugly when we normalize the features.\n",
    "# df.year_first_booking = df.year_first_booking.fillna(min(df.year_first_booking) - 1)\n",
    "# df.month_first_booking = df.month_first_booking.fillna(min(df.month_first_booking) - 1)\n",
    "# df.weekday_first_booking += 1\n",
    "# df.weekday_first_booking = df.weekday_first_booking.fillna(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "action                              0\n",
       "action_count                        0\n",
       "action_detail                       0\n",
       "action_type                         0\n",
       "affiliate_channel                   0\n",
       "affiliate_provider                  0\n",
       "age                                 0\n",
       "apple_device                        0\n",
       "country_destination             62096\n",
       "day_pauses                          0\n",
       "desktop_device                      0\n",
       "device_type                         0\n",
       "first_affiliate_tracked          6085\n",
       "first_browser                       0\n",
       "first_device_type                   0\n",
       "gender                              0\n",
       "id                                  0\n",
       "language                            0\n",
       "long_pauses                         0\n",
       "mobile_device                       0\n",
       "secs_elapsed_max                    0\n",
       "secs_elapsed_mean                   0\n",
       "secs_elapsed_median                 0\n",
       "secs_elapsed_min                    0\n",
       "secs_elapsed_sum                    0\n",
       "session_length                      0\n",
       "short_pauses                        0\n",
       "signup_app                          0\n",
       "signup_flow                         0\n",
       "signup_method                       0\n",
       "tablet_device                       0\n",
       "unique_action_details               0\n",
       "unique_action_types                 0\n",
       "unique_actions                      0\n",
       "unique_device_types                 0\n",
       "age_group                           0\n",
       "year_account_created                0\n",
       "month_account_created               0\n",
       "weekday_account_created             0\n",
       "business_day_account_created        0\n",
       "holiday_account_created             0\n",
       "year_first_active                   0\n",
       "month_first_active                  0\n",
       "weekday_first_active                0\n",
       "business_day_first_active           0\n",
       "holiday_first_active                0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.isnull().sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### first_affiliate_tracked"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "untracked        143181\n",
       "linked            62064\n",
       "omg               54859\n",
       "tracked-other      6655\n",
       "product            2353\n",
       "marketing           281\n",
       "local ops            69\n",
       "Name: first_affiliate_tracked, dtype: int64"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['first_affiliate_tracked'].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Set the missing values for \"first_affiliate_tracked\" to \"untracked\"."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.first_affiliate_tracked = df.first_affiliate_tracked.fillna(\"untracked\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "action                              0\n",
       "action_count                        0\n",
       "action_detail                       0\n",
       "action_type                         0\n",
       "affiliate_channel                   0\n",
       "affiliate_provider                  0\n",
       "age                                 0\n",
       "apple_device                        0\n",
       "country_destination             62096\n",
       "day_pauses                          0\n",
       "desktop_device                      0\n",
       "device_type                         0\n",
       "first_affiliate_tracked             0\n",
       "first_browser                       0\n",
       "first_device_type                   0\n",
       "gender                              0\n",
       "id                                  0\n",
       "language                            0\n",
       "long_pauses                         0\n",
       "mobile_device                       0\n",
       "secs_elapsed_max                    0\n",
       "secs_elapsed_mean                   0\n",
       "secs_elapsed_median                 0\n",
       "secs_elapsed_min                    0\n",
       "secs_elapsed_sum                    0\n",
       "session_length                      0\n",
       "short_pauses                        0\n",
       "signup_app                          0\n",
       "signup_flow                         0\n",
       "signup_method                       0\n",
       "tablet_device                       0\n",
       "unique_action_details               0\n",
       "unique_action_types                 0\n",
       "unique_actions                      0\n",
       "unique_device_types                 0\n",
       "age_group                           0\n",
       "year_account_created                0\n",
       "month_account_created               0\n",
       "weekday_account_created             0\n",
       "business_day_account_created        0\n",
       "holiday_account_created             0\n",
       "year_first_active                   0\n",
       "month_first_active                  0\n",
       "weekday_first_active                0\n",
       "business_day_first_active           0\n",
       "holiday_first_active                0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.isnull().sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The null values in 'country_destination' belong to the testing data. Now let's explore the categorical features that might have too many values and reduce that number before we do one-hot encoding."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### first_browser_value_count"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Chrome                  78671\n",
       "Safari                  53302\n",
       "-unknown-               44394\n",
       "Firefox                 38665\n",
       "Mobile Safari           29636\n",
       "IE                      24744\n",
       "Chrome Mobile            3186\n",
       "Android Browser          1577\n",
       "AOL Explorer              254\n",
       "Opera                     228\n",
       "Silk                      172\n",
       "IE Mobile                 118\n",
       "BlackBerry Browser         89\n",
       "Chromium                   83\n",
       "Mobile Firefox             64\n",
       "Maxthon                    60\n",
       "Apple Mail                 45\n",
       "Sogou Explorer             43\n",
       "SiteKiosk                  27\n",
       "RockMelt                   24\n",
       "Iron                       24\n",
       "IceWeasel                  14\n",
       "Yandex.Browser             14\n",
       "Pale Moon                  13\n",
       "CometBird                  12\n",
       "SeaMonkey                  12\n",
       "Camino                      9\n",
       "TenFourFox                  8\n",
       "Opera Mini                  8\n",
       "wOSBrowser                  7\n",
       "CoolNovo                    6\n",
       "Opera Mobile                4\n",
       "Avant Browser               4\n",
       "Mozilla                     3\n",
       "Crazy Browser               2\n",
       "Comodo Dragon               2\n",
       "OmniWeb                     2\n",
       "SlimBrowser                 2\n",
       "Flock                       2\n",
       "TheWorld Browser            2\n",
       "IceDragon                   1\n",
       "Google Earth                1\n",
       "Epic                        1\n",
       "Nintendo Browser            1\n",
       "Googlebot                   1\n",
       "Conkeror                    1\n",
       "Palm Pre web browser        1\n",
       "Kindle Browser              1\n",
       "Arora                       1\n",
       "NetNewsWire                 1\n",
       "PS Vita browser             1\n",
       "UC Browser                  1\n",
       "IBrowse                     1\n",
       "Outlook 2007                1\n",
       "Stainless                   1\n",
       "Name: first_browser, dtype: int64"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.first_browser.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Chrome       78671\n",
       "Safari       53302\n",
       "-unknown-    44394\n",
       "Firefox      38665\n",
       "Mobile       34581\n",
       "IE           24744\n",
       "Other         1190\n",
       "Name: first_browser, dtype: int64"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Create a new feature for those using mobile browsers\n",
    "mobile_browsers = ['Mobile Safari','Chrome Mobile','IE Mobile','Mobile Firefox','Android Browser']\n",
    "df.loc[df.first_browser.isin(mobile_browsers), \"first_browser\"] = \"Mobile\"\n",
    "# The cut_off is set at 2000. If a value is less than 2000, it will be grouped \"other\"\n",
    "cut_off = 2000\n",
    "\n",
    "other_browsers = []\n",
    "for browser, count in df.first_browser.value_counts().iteritems():\n",
    "    if count < cut_off:\n",
    "        other_browsers.append(browser)\n",
    "df.loc[df.first_browser.isin(other_browsers), \"first_browser\"] = \"Other\"\n",
    "df.first_browser.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### language"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "en           265538\n",
       "zh             2634\n",
       "fr             1508\n",
       "es             1174\n",
       "ko             1116\n",
       "de              977\n",
       "it              633\n",
       "ru              508\n",
       "ja              345\n",
       "pt              322\n",
       "sv              176\n",
       "nl              134\n",
       "tr               92\n",
       "da               75\n",
       "pl               75\n",
       "no               51\n",
       "cs               49\n",
       "el               30\n",
       "th               28\n",
       "hu               25\n",
       "id               23\n",
       "fi               20\n",
       "ca                6\n",
       "is                5\n",
       "hr                2\n",
       "-unknown-         1\n",
       "Name: language, dtype: int64"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.language.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "en       265538\n",
       "zh         2634\n",
       "fr         1508\n",
       "es         1174\n",
       "ko         1116\n",
       "de          977\n",
       "Other       792\n",
       "it          633\n",
       "ru          508\n",
       "ja          345\n",
       "pt          322\n",
       "Name: language, dtype: int64"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# I think that language might be a more important feature than some others, so I will decrease the cut off to 275, or 0.1% of the data.\n",
    "other_languages = []\n",
    "for language, count in df.language.value_counts().iteritems():\n",
    "    if count < 200:\n",
    "        other_languages.append(language)\n",
    "df.loc[df.language.isin(other_languages), \"language\"] = \"Other\"   \n",
    "df.language.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [],
   "source": [
    "# New feature for languages that are not English.\n",
    "df['not_English'] = df.language.map(lambda x: 0 if x == 'en' else 1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### action"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "missing                                         140064\n",
       "show                                             61611\n",
       "search_results                                   10368\n",
       "index                                             6493\n",
       "dashboard                                         5969\n",
       "search                                            5895\n",
       "active                                            5836\n",
       "update                                            5264\n",
       "create                                            4259\n",
       "requested                                         3574\n",
       "edit                                              2714\n",
       "authenticate                                      2277\n",
       "personalize                                       2256\n",
       "header_userpic                                    1981\n",
       "ajax_refresh_subtotal                             1851\n",
       "ask_question                                      1756\n",
       "identity                                          1269\n",
       "lookup                                            1236\n",
       "cancellation_policies                              745\n",
       "message                                            719\n",
       "track_page_view                                    614\n",
       "click                                              594\n",
       "confirm_email                                      552\n",
       "ajax_photo_widget_form_iframe                      542\n",
       "qt2                                                514\n",
       "ajax_check_dates                                   390\n",
       "notifications                                      325\n",
       "calendar_tab_inner2                                308\n",
       "message_to_host_focus                              307\n",
       "callback                                           289\n",
       "                                                 ...  \n",
       "ajax_price_and_availability                          2\n",
       "apply                                                2\n",
       "15                                                   2\n",
       "mobile_landing_page                                  2\n",
       "review_page                                          1\n",
       "top_destinations                                     1\n",
       "acculynk_pin_pad_inactive                            1\n",
       "show_personalize                                     1\n",
       "rate                                                 1\n",
       "ajax_worth                                           1\n",
       "my_listings                                          1\n",
       "badge                                                1\n",
       "remove_dashboard_alert                               1\n",
       "confirmation                                         1\n",
       "languages_multiselect                                1\n",
       "phone_verification_number_submitted_for_call         1\n",
       "new_session                                          1\n",
       "book                                                 1\n",
       "travel_plans_previous                                1\n",
       "other_hosting_reviews_first                          1\n",
       "home_safety_landing                                  1\n",
       "salute                                               1\n",
       "photography                                          1\n",
       "my                                                   1\n",
       "spoken_languages                                     1\n",
       "requirements                                         1\n",
       "concierge                                            1\n",
       "clickthrough                                         1\n",
       "ajax_referral_banner_type                            1\n",
       "view                                                 1\n",
       "Name: action, Length: 170, dtype: int64"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.action.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "missing           140064\n",
       "show               61611\n",
       "Other              18967\n",
       "search_results     10368\n",
       "index               6493\n",
       "dashboard           5969\n",
       "search              5895\n",
       "active              5836\n",
       "update              5264\n",
       "create              4259\n",
       "requested           3574\n",
       "edit                2714\n",
       "authenticate        2277\n",
       "personalize         2256\n",
       "Name: action, dtype: int64"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "other_actions = []\n",
    "for action, count in df.action.value_counts().iteritems():\n",
    "    if count < cut_off:\n",
    "        other_actions.append(action)\n",
    "df.loc[df.action.isin(other_actions), \"action\"] = \"Other\"\n",
    "df.action.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### action_detail"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "missing                        140069\n",
       "-unknown-                       35037\n",
       "p3                              29387\n",
       "view_search_results             28491\n",
       "user_profile                    10037\n",
       "dashboard                        4893\n",
       "update_listing                   4463\n",
       "header_userpic                   2556\n",
       "p5                               2489\n",
       "create_user                      1991\n",
       "message_thread                   1633\n",
       "change_trip_characteristics      1598\n",
       "contact_host                     1399\n",
       "edit_profile                     1231\n",
       "wishlist_content_update          1031\n",
       "confirm_email_link                973\n",
       "message_post                      774\n",
       "cancellation_policies             742\n",
       "track_page_view                   627\n",
       "login                             559\n",
       "signup                            496\n",
       "lookup                            445\n",
       "similar_listings                  401\n",
       "listing_reviews                   326\n",
       "unavailable_dates                 299\n",
       "change_contact_host_dates         262\n",
       "book_it                           244\n",
       "user_wishlists                    234\n",
       "list_your_space                   233\n",
       "manage_listing                    231\n",
       "                                ...  \n",
       "view_listing                        7\n",
       "read_policy_click                   7\n",
       "previous_trips                      7\n",
       "set_password_page                   7\n",
       "listing_recommendations             6\n",
       "signup_modal                        5\n",
       "apply_coupon_click                  5\n",
       "view_reservations                   5\n",
       "forgot_password                     5\n",
       "account_payment_methods             5\n",
       "user_listings                       4\n",
       "account_privacy_settings            4\n",
       "cancellation_policy_click           3\n",
       "modify_reservations                 3\n",
       "user_profile_content_update         3\n",
       "your_reservations                   3\n",
       "login_modal                         3\n",
       "profile_reviews                     2\n",
       "change_or_alter                     2\n",
       "admin_templates                     2\n",
       "alteration_field                    2\n",
       "listing_descriptions                1\n",
       "guest_receipt                       1\n",
       "complete_booking                    1\n",
       "airbnb_picks_wishlists              1\n",
       "host_home                           1\n",
       "friends_wishlists                   1\n",
       "oauth_login                         1\n",
       "modify_users                        1\n",
       "payment_instruments                 1\n",
       "Name: action_detail, Length: 96, dtype: int64"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.action_detail.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "missing                140069\n",
       "-unknown-               35037\n",
       "p3                      29387\n",
       "view_search_results     28491\n",
       "Other                   18125\n",
       "user_profile            10037\n",
       "dashboard                4893\n",
       "update_listing           4463\n",
       "header_userpic           2556\n",
       "p5                       2489\n",
       "Name: action_detail, dtype: int64"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "other_action_details = []\n",
    "for action_detail, count in df.action_detail.value_counts().iteritems():\n",
    "    if count < cut_off:\n",
    "        other_action_details.append(action_detail)\n",
    "df.loc[df.action_detail.isin(other_action_details), \"action_detail\"] = \"Other\"\n",
    "df.action_detail.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### action_type"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "missing             140070\n",
       "view                 76491\n",
       "click                18345\n",
       "-unknown-            17724\n",
       "data                 14750\n",
       "submit                6485\n",
       "message_post           998\n",
       "track_page_view        316\n",
       "partner_callback       134\n",
       "booking_request        123\n",
       "lookup                 109\n",
       "modify                   2\n",
       "Name: action_type, dtype: int64"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.action_type.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "missing      140070\n",
       "view          76491\n",
       "click         18345\n",
       "-unknown-     17724\n",
       "data          14750\n",
       "submit         6485\n",
       "Other          1682\n",
       "Name: action_type, dtype: int64"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "other_action_types = []\n",
    "for action_type, count in df.action_type.value_counts().iteritems():\n",
    "    if count < cut_off:\n",
    "        other_action_types.append(action_type)\n",
    "df.loc[df.action_type.isin(other_action_types), \"action_type\"] = \"Other\"\n",
    "df.action_type.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### affiliate_provider"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "direct                 181270\n",
       "google                  65956\n",
       "other                   13036\n",
       "facebook                 3996\n",
       "bing                     3719\n",
       "craigslist               3475\n",
       "padmapper                 836\n",
       "vast                      830\n",
       "yahoo                     653\n",
       "facebook-open-graph       566\n",
       "gsp                       455\n",
       "meetup                    358\n",
       "email-marketing           270\n",
       "naver                      66\n",
       "baidu                      32\n",
       "yandex                     18\n",
       "wayn                        8\n",
       "daum                        3\n",
       "Name: affiliate_provider, dtype: int64"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.affiliate_provider.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "direct        181270\n",
       "google         65956\n",
       "other          17131\n",
       "facebook        3996\n",
       "bing            3719\n",
       "craigslist      3475\n",
       "Name: affiliate_provider, dtype: int64"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "other_affiliate_providers = []\n",
    "for affiliate_provider, count in df.affiliate_provider.value_counts().iteritems():\n",
    "    if count < cut_off:\n",
    "        other_affiliate_providers.append(affiliate_provider)\n",
    "df.loc[df.affiliate_provider.isin(other_affiliate_providers), \"affiliate_provider\"] = \"other\"\n",
    "df.affiliate_provider.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### device_type"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "missing                             140064\n",
       "Mac Desktop                          44279\n",
       "Windows Desktop                      37224\n",
       "iPhone                               26567\n",
       "iPad Tablet                           8880\n",
       "Android Phone                         7670\n",
       "-unknown-                             5792\n",
       "Android App Unknown Phone/Tablet      2629\n",
       "Tablet                                1469\n",
       "Linux Desktop                          428\n",
       "Chromebook                             374\n",
       "iPodtouch                               86\n",
       "Windows Phone                           56\n",
       "Blackberry                              27\n",
       "Opera Phone                              2\n",
       "Name: device_type, dtype: int64"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.device_type.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "missing                             140064\n",
       "Mac Desktop                          44279\n",
       "Windows Desktop                      37224\n",
       "iPhone                               26567\n",
       "iPad Tablet                           8880\n",
       "Android Phone                         7670\n",
       "-unknown-                             5792\n",
       "Android App Unknown Phone/Tablet      2629\n",
       "Other                                 2442\n",
       "Name: device_type, dtype: int64"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "other_device_types = []\n",
    "for device_type, count in df.device_type.value_counts().iteritems():\n",
    "    if count < cut_off:\n",
    "        other_device_types.append(device_type)\n",
    "df.loc[df.device_type.isin(other_device_types), \"device_type\"] = \"Other\"\n",
    "df.device_type.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "basic       198222\n",
       "facebook     74864\n",
       "google        2438\n",
       "weibo           23\n",
       "Name: signup_method, dtype: int64"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.signup_method.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [],
   "source": [
    "labels = pd.DataFrame(df.country_destination)\n",
    "df = df.drop(\"country_destination\", axis = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>country_destination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>other</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>NDF</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>NDF</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>NDF</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>GB</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  country_destination\n",
       "0               other\n",
       "1                 NDF\n",
       "2                 NDF\n",
       "3                 NDF\n",
       "4                  GB"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labels.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.drop('id', axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['action', 'action_detail', 'action_type', 'affiliate_channel', 'affiliate_provider', 'device_type', 'first_affiliate_tracked', 'first_browser', 'first_device_type', 'gender', 'language', 'signup_app', 'signup_method']\n",
      "---\n",
      "['action_count', 'age', 'apple_device', 'day_pauses', 'desktop_device', 'long_pauses', 'mobile_device', 'secs_elapsed_max', 'secs_elapsed_mean', 'secs_elapsed_median', 'secs_elapsed_min', 'secs_elapsed_sum', 'session_length', 'short_pauses', 'tablet_device', 'unique_action_details', 'unique_action_types', 'unique_actions', 'unique_device_types']\n",
      "---\n",
      "32\n",
      "45\n"
     ]
    }
   ],
   "source": [
    "# Group all features as either continuous (cont) or categorical (cat)\n",
    "cont_features = []\n",
    "cat_features = []\n",
    "\n",
    "for feature in df.columns:\n",
    "    if df[feature].dtype == float or df[feature].dtype == int:\n",
    "        cont_features.append(feature)\n",
    "    elif df[feature].dtype == object:\n",
    "        cat_features.append(feature)\n",
    "\n",
    "# Check to ensure that we have all of the features\n",
    "print(cat_features)\n",
    "print('---')\n",
    "print(cont_features)\n",
    "print('---')\n",
    "print(len(cat_features) + len(cont_features))\n",
    "print(df.shape[1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create dummy variables for each categorical feature"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "action is complete\n",
      "action_detail is complete\n",
      "action_type is complete\n",
      "affiliate_channel is complete\n",
      "affiliate_provider is complete\n",
      "device_type is complete\n",
      "first_affiliate_tracked is complete\n",
      "first_browser is complete\n",
      "first_device_type is complete\n",
      "gender is complete\n",
      "language is complete\n",
      "signup_app is complete\n",
      "signup_method is complete\n"
     ]
    }
   ],
   "source": [
    "for feature in cat_features:\n",
    "    # Create dummies of each value of a categorical feature\n",
    "    dummies = pd.get_dummies(df[feature], prefix = feature, drop_first = False)\n",
    "    # Drop the unneeded feature\n",
    "    df = df.drop(feature, axis = 1)\n",
    "    df = pd.concat([df, dummies], axis=1)\n",
    "    print(\"{} is complete\".format(feature))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Preprocessing continuous variables"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [],
   "source": [
    "min_max_scaler = preprocessing.MinMaxScaler()\n",
    "# Normalize the continuous features\n",
    "for feature in cont_features:\n",
    "    df.loc[:,feature] = min_max_scaler.fit_transform(df[[feature]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Split df into training and testing data\n",
    "df_train = df[:len(train)]\n",
    "df_test = df[len(train):]\n",
    "\n",
    "# Shorten labels to length of the training data\n",
    "y = labels[:len(train)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(213451, 132)"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(213451, 1)"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train, x_test, y_train, y_test = train_test_split(df_train, y, test_size = 0.33, random_state = 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\SusanLi\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\sklearn\\preprocessing\\label.py:235: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.preprocessing import LabelEncoder\n",
    "\n",
    "x_train = x_train.values\n",
    "\n",
    "label_encoder = LabelEncoder()\n",
    "encoded_y_train = label_encoder.fit_transform(y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [],
   "source": [
    "import xgboost as xgb\n",
    "\n",
    "xgtrain = xgb.DMatrix(x_train, label=encoded_y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [],
   "source": [
    "def ndcg_score(preds, dtrain):\n",
    "    labels = dtrain.get_label()\n",
    "    top = []\n",
    "\n",
    "    for i in range(preds.shape[0]):\n",
    "        top.append(np.argsort(preds[i])[::-1][:5])\n",
    "\n",
    "    mat = np.reshape(np.repeat(labels,np.shape(top)[1]) == np.array(top).ravel(),np.array(top).shape).astype(int)\n",
    "    score = np.mean(np.sum(mat/np.log2(np.arange(2, mat.shape[1] + 2)),axis = 1))\n",
    "    return 'ndcg', score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>test-mlogloss-mean</th>\n",
       "      <th>test-mlogloss-std</th>\n",
       "      <th>test-ndcg-mean</th>\n",
       "      <th>test-ndcg-std</th>\n",
       "      <th>train-mlogloss-mean</th>\n",
       "      <th>train-mlogloss-std</th>\n",
       "      <th>train-ndcg-mean</th>\n",
       "      <th>train-ndcg-std</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.235407</td>\n",
       "      <td>0.005221</td>\n",
       "      <td>0.824812</td>\n",
       "      <td>0.000479</td>\n",
       "      <td>1.172766</td>\n",
       "      <td>0.000862</td>\n",
       "      <td>0.836865</td>\n",
       "      <td>0.000481</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.463462</td>\n",
       "      <td>0.017184</td>\n",
       "      <td>0.744011</td>\n",
       "      <td>0.003051</td>\n",
       "      <td>1.339142</td>\n",
       "      <td>0.013875</td>\n",
       "      <td>0.769207</td>\n",
       "      <td>0.003008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.198935</td>\n",
       "      <td>0.029353</td>\n",
       "      <td>0.817275</td>\n",
       "      <td>0.000982</td>\n",
       "      <td>1.033229</td>\n",
       "      <td>0.021036</td>\n",
       "      <td>0.848912</td>\n",
       "      <td>0.000113</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2.227170</td>\n",
       "      <td>0.474228</td>\n",
       "      <td>0.770578</td>\n",
       "      <td>0.018734</td>\n",
       "      <td>2.006178</td>\n",
       "      <td>0.447395</td>\n",
       "      <td>0.808892</td>\n",
       "      <td>0.017484</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.485392</td>\n",
       "      <td>0.184846</td>\n",
       "      <td>0.813060</td>\n",
       "      <td>0.000971</td>\n",
       "      <td>1.246601</td>\n",
       "      <td>0.195693</td>\n",
       "      <td>0.855027</td>\n",
       "      <td>0.000980</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   test-mlogloss-mean  test-mlogloss-std  test-ndcg-mean  test-ndcg-std  \\\n",
       "0            1.235407           0.005221        0.824812       0.000479   \n",
       "1            1.463462           0.017184        0.744011       0.003051   \n",
       "2            1.198935           0.029353        0.817275       0.000982   \n",
       "3            2.227170           0.474228        0.770578       0.018734   \n",
       "4            1.485392           0.184846        0.813060       0.000971   \n",
       "\n",
       "   train-mlogloss-mean  train-mlogloss-std  train-ndcg-mean  train-ndcg-std  \n",
       "0             1.172766            0.000862         0.836865        0.000481  \n",
       "1             1.339142            0.013875         0.769207        0.003008  \n",
       "2             1.033229            0.021036         0.848912        0.000113  \n",
       "3             2.006178            0.447395         0.808892        0.017484  \n",
       "4             1.246601            0.195693         0.855027        0.000980  "
      ]
     },
     "execution_count": 110,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "param = {\n",
    "    'max_depth': 10,\n",
    "    'learning_rate': 1,\n",
    "    'n_estimators': 5,\n",
    "    'objective': 'multi:softprob',\n",
    "    'num_class': 12,\n",
    "    'gamma': 0,\n",
    "    'min_child_weight': 1,\n",
    "    'max_delta_step': 0,\n",
    "    'subsample': 1,\n",
    "    'colsample_bytree': 1,\n",
    "    'colsample_bylevel': 1,\n",
    "    'reg_alpha': 0,\n",
    "    'reg_lambda': 1,\n",
    "    'scale_pos_weight': 1,\n",
    "    'base_score': 0.5,\n",
    "    'missing': None,\n",
    "    'silent': True,\n",
    "    'nthread': 4,\n",
    "    'seed': 42\n",
    "}\n",
    "# Do cross validation\n",
    "num_round = 5\n",
    "xgb.cv(param, xgtrain, num_boost_round=num_round, metrics=['mlogloss'], feval=ndcg_score)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
